Hallo zusammen,
ich führe in meinem Lan auf einem Lamp-Server ein PHP-Script aus, dass zum http-Upload von Dateien genutzt wird. Ich überprüfe die Dateigröße des Uploads durch die globale Varible '$_FILES[dateiname
][size
]’ und gestatte hier z.B. 1 MB. In der php.ini ist 'upload_max_filesize = 2M’, also 2MB, das Limit.
Wird das scriptseitige Limit von 1 MB beim Upload überschritten, bleibt aber unter dem Serverlimit von 2 MB, greift die scriptseitige Begrenzung mit der Verwendung von '$_FILES[dateiname
][size
]’. Wenn der Upload das Serverlimit von 2 MB übersteigt, funktioniert die Überprüfung der Dateigröße mit '$_FILES[dateiname
][size
]’ nicht mehr und der Upload wird durch den Rückgabewert von copy() abgebrochen. Das wäre alles kein Problem, wenn bei einer riesigen Upload-Datei die Wartezeit auf den Abbruch nicht so lang wäre. Bei einem Upload-Versuch von 30 MB-Dateien kann es bei einem nicht ganz taufrischem Rechner schon mal 45 Sekunden dauern bis die Abruchmeldung der copy-Funktion ausgeführt wird.
Ich habe dann überlegt, die Ausführungszeit des Scriptes durch 'set_time_limit()’ zeitlich zu limitieren. Vergeblich. Sowohl die Einstellung in der php.ini des Apache zum Limitieren der Ausführungszeit als auch die Verwendung von 'set_time_limit()’ hatten keinen Effekt. Ich habe dann im Forums-Archiv erfahren, dass 'set_time_limit()’ nur die Ausführungszeit des Scriptes als solches betrifft. D.h., dass z.B. die Ausführungszeiten von Datenbankabfragen oder inkludierten Scripten nicht mitgezählt werden. Trifft das dann auch auf den ‚header-Verkehr’ zur Ermittlung der Dateigröße zu? Kann man da irgendetwas anstellen, das mein Script bei einer Riesendatei die Sache schneller beendet?
Danke
Tylor