Lidt hjælp til brug af klasser og instanser af samme
Hej!Jeg har en del kode som skal pakke en bunke billeder til en zip-fil.
Eftersom det tit går ud over max execution time har jeg valgt at tage dem 5 ad gangen.
Nedenstående script giver mig fejlen
"Fatal error: Call to a member function on a non-object in D:\HTML\test4.php on line 35"
og det er vel forståeligt, da jeg opretter instansen i det første kald, og når jeg så opdaterer siden er den vel ikke tilgængelig mere.
Mit spørgsmål er så om jeg på en eller anden måde kan bære denne instans med mig til de næste sider?
Det er linierne med $archive = new PclZip, $archive->create og $archive->add der er vigtige.
Her er min kode:
<?
session_start();
sleep(1);
include("pclzip.lib.php");
if(isset($_REQUEST['side'])) {
$start = $_REQUEST['side'];
} else {
$_SESSION['filer'] = "";
//Det er første gang skidtet køres, så skal billederne læses ind i et array (session)
$mappe = "varer/";
$archive = new PclZip("archive.zip");
# Laver et array med filerne
$handle = opendir($mappe);
while (($fil = readdir($handle)) !== false) {
if (($fil != "." && $fil != "..") && strstr($fil, ".")) {
$_SESSION['filer'][] = $mappe . $fil;
}
}
$archive->create($_SESSION['filer'][0]);
$start = 0;
}
$antal_billeder = count($_SESSION['filer']); //Antal billeder der samlet skal pakkes
$antal_ad_gangen = 5; //Hvor mange skal der pakkes pr kald
echo "Samlet antal billeder der skal pakkes: " . $antal_billeder . "<br>";
echo "Pakkes:<br>";
$i = $start;
while($i < $start+$antal_ad_gangen) {
echo $_SESSION['filer'][$i] . "<br>";
$archive->add($_SESSION['filer'][$start]);
$i++;
}
if($antal_billeder > ($start+$antal_ad_gangen-1)) {
$hvortil = $start+$antal_ad_gangen;
} else {
$hvortil = $antal_billeder;
}
echo "(Pakker billede " . ($start +1) . " - " . $hvortil . ")<br>";
echo round((($start+$antal_ad_gangen) / $antal_billeder * 100)) . " % færdig";
flush(); //Har den overhovedet noget formål her?
if($start+$antal_ad_gangen < $antal_billeder) {
?>
<script type="text/javascript">
location.href='test4.php?side=<? echo ($start+$antal_ad_gangen);?>';
</script>
<?
} else {
echo "<br>Afsendelse lykkedes";
}
?>
