Hallo zusammen,
ich habe seit langem mal wieder ein Problem andem ich richtig festsitze und nicht weiterkomme.
Problem: ich lese Dateinamen aus einer SQL Datenbank aus. Die daraus resultierenden Dateien packe ich mittels einer ZIP Klasse in ein ZIP. Das funktioniert wunderbar bis zu einer Dateigröße von ca. 250MB, wo die Scriptausführung solange braucht, dass der HTTPD Timeout von 300 Sekunden (vermute ich) überschritten wird und das Script abbricht. (httpd.conf darf ich nicht ändern)
Infos zum Server:
PHP Version: 4.4.
register_globals = ON
safe_mode = OFF
time_limit = 9999
max_execution_time = 9999
memory_limit = 1000M
Das Script:
Ich habe bereits die Suche bemüht, da ich den selben Gedanken mit der mehrmaligen Scriptausführung hatte und habe folgenden Thread gefunden: [Funktion] PHP-Script bricht immer ab 1&1
Leider schaffe ich es nicht die Lösung von Damian1984 für meine Problemstellung anzupassen und benötige deshalb eure Hilfe.
Die ZIP Klasse ist übrigens aus der ZEND Libary von Eric Müller.
Ziel soll sein, auch ZIPs bis zu 1000MB erzeugen zu können, ohne das das Script abbricht. Man sollte auch schön sehen können (wie es jetzt ist), welche Datei aktuell bearbeitet wird.
Ein Alternativansatz an dem ich auch gescheitert bin, wäre einen tar Befehl über system() an den Server zu senden. Vorteil wäre das unbegrenzt große Dateien erzeugt werden können. Allerdings ist mir das tar Format nicht so lieb und ich weiß nicht, wie ich die Daten aus dem MySQL Array hintereinander anordne um sie in einer Variable in den System(tar ...) Befehl zu geben.
Ich wäre für jegliche Hilfe & Lösungsansätze sehr dankbar,
Viele Grüße
DuRoX
ich habe seit langem mal wieder ein Problem andem ich richtig festsitze und nicht weiterkomme.
Problem: ich lese Dateinamen aus einer SQL Datenbank aus. Die daraus resultierenden Dateien packe ich mittels einer ZIP Klasse in ein ZIP. Das funktioniert wunderbar bis zu einer Dateigröße von ca. 250MB, wo die Scriptausführung solange braucht, dass der HTTPD Timeout von 300 Sekunden (vermute ich) überschritten wird und das Script abbricht. (httpd.conf darf ich nicht ändern)
Infos zum Server:
PHP Version: 4.4.
register_globals = ON
safe_mode = OFF
time_limit = 9999
max_execution_time = 9999
memory_limit = 1000M
Das Script:
PHP-Code:
<?
error_reporting(E_WARN);
ini_set("memory_limit","1000M");
ini_set("max_execution_time","9999");
ini_set("max_input_time","9999");
set_time_limit("9999");
include(dirname(__FILE__) . "/config/dbase.php");
include(dirname(__FILE__) . "/classes/mysqlBase.class.php");
include(dirname(__FILE__) . "/classes/mysql.class.php");
include(dirname(__FILE__) . "/classes/settings.class.php");
include(dirname(__FILE__) . "/classes/zipBase.class.php");
# Klassen
$_db = new mysql();
$_zip = new zipfile;
$myid = $_REQUEST['id'];
$getPics = $_db->query("SELECT FilePath, FileName FROM tblPictures WHERE AlbumId = '$myid'");
$i=0;
while($db = $_db->fetch_array($getPics))
{
$mypath = str_replace("./","/var/www/vhosts/mydom/subdomains/test/httpdocs/new/",$db[FilePath]);
$i = $i + 1;
echo $i." Processing File:".$db[FileName]."<br>";
flush();
}
$file = dirname(__FILE__) . "/zipped/zip_$myid.zip";
$zipfile = fopen ($file, "a+");
fwrite($zipfile,$_zip->file());
echo "done :)";
?>
Leider schaffe ich es nicht die Lösung von Damian1984 für meine Problemstellung anzupassen und benötige deshalb eure Hilfe.
Die ZIP Klasse ist übrigens aus der ZEND Libary von Eric Müller.
Ziel soll sein, auch ZIPs bis zu 1000MB erzeugen zu können, ohne das das Script abbricht. Man sollte auch schön sehen können (wie es jetzt ist), welche Datei aktuell bearbeitet wird.
Ein Alternativansatz an dem ich auch gescheitert bin, wäre einen tar Befehl über system() an den Server zu senden. Vorteil wäre das unbegrenzt große Dateien erzeugt werden können. Allerdings ist mir das tar Format nicht so lieb und ich weiß nicht, wie ich die Daten aus dem MySQL Array hintereinander anordne um sie in einer Variable in den System(tar ...) Befehl zu geben.
Ich wäre für jegliche Hilfe & Lösungsansätze sehr dankbar,
Viele Grüße
DuRoX
Kommentar