Marco: Script bricht mit Error-500 ab

Moinsen,

ich mal wieder :)

Mein Script liest XML Daten ein und verarbeitet diese.
Jetzt habe ich das Problem das nach 120 Sekunden, eine wunderschöne HTTP 500-Error Seite angezeigt wird.

Das ganze wollte ich mit "set_time_limit(0);" und "ob_flush();" umgehen. Nur leider funktioniert das nicht so recht. Schon "ob_flush();" gibt mir im Browser keine ausgabe.

Habt ihr vielleicht noch ein paar Ideen?

Mein Script, das wichtigste:

<?php  
set_time_limit(0);  
error_reporting(E_ALL);  
......  
......  
// $counter = ca. 2000  
for($i=0; $i<$counter; $i++){  
	ob_start();  
	......  
	echo $i." Alles Ok <br>";  
	ob_flush();  
}  
ob_end_flush();  
...  
...  
?>

Vielen Dank

MfG
Marco

  1. Lieber Marco,

    was genau(!) sagt Dein Error-Log?

    Jetzt habe ich das Problem das nach 120 Sekunden, eine wunderschöne HTTP 500-Error Seite angezeigt wird.

    Das _kann_ ein Timeout-Problem sein, muss aber nicht. Näheres sollte im Error-Log stehen. Wenn da nichts steht, frage Deinen Hosting-Support, was da schief läuft.

    Ich hatte schon erlebt, dass ein Script von mir den Webserver hat neu starten lassen. Anscheinend hatte ich dort Probleme mit dem zugewiesenen Speicher. Vielleicht wäre ja mehr Speicher etwas, das Dir weiterhelfen könnte?

    Das ganze wollte ich mit "set_time_limit(0);" und "ob_flush();" umgehen.

    Was genau meinst Du mit den Buffer-Anweisungen zu erreichen?

    Nur leider funktioniert das nicht so recht.

    Was genau bedeutet "funktioniert das nicht so recht"? Insbesondere: Wie äußert sich "nicht so recht" in der Praxis?

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Moin Moin,

      was genau(!) sagt Dein Error-Log?

      Gute Frage: Mein Hoster sagt:
      Für PHP führen wir kein Error-Log.

      Sie können aber die Error-Ausgabe aktivieren indem Sie folgende
      Daten in den fehlerhaften Code integrieren.

      error_reporting(E_ALL);
      ini_set("display_errors", 1);

      Oft kommt der Fehler 500 auf Grund ungenügender Resourcen.
      z.B. des PHP-Memory-Limits

      Ich hatte schon erlebt, dass ein Script von mir den Webserver hat neu starten lassen. Anscheinend hatte ich dort Probleme mit dem zugewiesenen Speicher. Vielleicht wäre ja mehr Speicher etwas, das Dir weiterhelfen könnte?

      OMG, wusste garnicht das soetwas mölich ist :)

      Ich habe jetzt nochmal versucht mit:

      ini_set('memory_limit', '96M');
      auf
      ini_set('memory_limit', '200M');

      zu erhöhen. Führt aber leider zum gleichen Fehler.

      Was genau meinst Du mit den Buffer-Anweisungen zu erreichen?

      Ich möchte damit die Ausgabe echo... in meiner for-schleife erzwingen.

      Vielen Dank

      MfG
      Marco

      1. Hello,

        Gute Frage: Mein Hoster sagt:
        Für PHP führen wir kein Error-Log.

        Bei "normaler" php.ini werden alle Errormessages von PHP ins (zuständige) Hostlog umgeleitet, wenn man "display_errors 0" eingestellt hat.
        http://de2.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

        Hast Du dir mal die Mühe gemacht, einen lokalen Webserver einzurichten und deine Scripte darauf zu testen?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bikers-lodge.com
        1. Hey Tom,

          Bei "normaler" php.ini werden alle Errormessages von PHP ins (zuständige) Hostlog umgeleitet, wenn man "display_errors 0" eingestellt hat.
          http://de2.php.net/manual/en/errorfunc.configuration.php#ini.display-errors

          Dann hat mein Hoster vielleicht keine Ahnung :D HAHA.. :D

          Hast Du dir mal die Mühe gemacht, einen lokalen Webserver einzurichten und deine Scripte darauf zu testen?

          Ne noch nicht...
          Ist aber eine gute Idee, die ich in Angriff nehmen werden.
          Gebe ich dann nochmal bescheid.

          Vielen Dank

          MfG
          Marco

        2. Moinsen,

          ich habe mir einen lokalen Webserver eingerichtet. Das Problem war schnell gefunden:
          max_execution_time 60
          Leider gibt es keine Möglichkeit diesen Wert zu erhöhen. Dafür müsste ich mein Paket wechseln.

          Jetzt war meine Idee, das ich mein Script aufteile. Jedoch weiß ich leider nicht wie ich das angehen soll.

          Das Script wird per Cron aufgerufen.
          Jetzt muss ich eine Möglichkeit finden. Die Ergebnisse irgendwie zwischenzuspeichern, um diese im nächsten Script (Teil 2) verwenden zu können.

          Dann brauche ich noch eine Möglichkeit, das Script (Teil 2) automatisch aufzurufen. Ohne das es an max_execution_time scheitert.

          Habt ihr vielleicht ein paar Ideen?

          MfG
          Marco