DiamondDog: Angebotener Download bricht immer ab.

Beitrag lesen

if(ini\_get('safe\_mode'))  
  @ini\_set('safe\_mode', false);  
if(ini\_get('safe\_mode'))  
  die("Der safe\_mode konnte nicht abgeschaltet werden!");  

Das kann ich dir von vorn herein sagen, dass ein eventuell gesetzter Safe Mode nicht im Script abgeschaltet werden kann. Das würde die Aufgabe des Safe Mode konterkarrieren.

Dann jetzt nur noch:

  
if(ini_get('safe_mode'))  
	die("Der safe_mode ist eingeschaltet abgeschaltet!");  

@ini\_set('memory\_limit',1024);  
if(ini\_get('memory\_limit') != 1024)  
  die("Das memory\_limit konnte nicht verändert werden! (".ini\_get('memory\_limit').")");  

Mit readfile() brauchst du auch kein Gigabyte Speicher, weil dieses ebenso wie deine Schleife nur kleine Stückchen einliest und durchreicht.

Aber wenn ich dich richtig verstehe, dann ist es in der Situation momentan egal ob die Zeile da ist oder nicht oder?

@ini\_set('max\_execution\_time', 300);  
if(ini\_get('max\_execution\_time') != 300)  
  die("Die max\_execution\_time konnte nicht verändert werden! (".ini\_get('max\_execution\_time').")");  

Neben dem PHP-internen Timeout gibt es noch Timeouts, die außerhalb konfiguriert werden. Wenn ein PHP-Timeout auftritt, bekommst du eine PHP-Fehlermeldung. Die findest du entweder in deiner Ausgabe (also am Ende der heruntergeladenen Datei) oder da wo du Fehlermeldungen explizit hingeleitet hast, wenn du das hast. Bei der max_execution_time wird auch nur die von PHP direkt verbrauchte Zeit gewertet, Zeit, die es auf das System warten muss, ist nicht in der Rechnung. Beispielswiese verbraucht bei sleep() nur der Funktionsaufruf ganz wenig dieser Zeit, egal wie lange das Script schlafen soll. Der Apache-Timeout oder ein anderer irgendwo im System konfigurierter Timeout kann aber trotzdem zuschlagen - dann aber ohen PHP-Fehlermeldung, weil PHP ja keine Chance mehr dazu hat.

Dazu bräuchte man glaubeich den Log um genau zu sehen wieso der Download beendet wurde.

Die Dateien unter http://www.seite.de/downloads/index.php konnten nicht gefunden werden.

Diese Meldung passt nicht zum gezeigten Code. Im Code machst du einen Dateizugriff, die Meldung redet was von einer URL, die jedoch bei einem HTTP-Request von Belang ist. Zudem ist der Meldungstext nicht im gezeigten Code zu sehen. Woher also kommt diese Meldung?

Gute Frage ich hab wie gesagt nur anstelle der Schleife, das readfile eingebaut und bekomme dann diese Meldung. Klammer ich das readfile mit // aus startet er den Dateidownload sofort wieder ohne Probleme.
*komisch*