Chrisi: MemoryLimit aber wo ?

Hallo zusammen,

habe hier ein etwas größeres Script, dass sich nach einer Weile immer wider überlädt und den Speicher sprengt.

Nun ist die Frage an welcher Stelle, bzw. welche Variable den Speicher nutzt.

Gobt es eine Möglichkeit sich eine Art Benschmark ausgeben zu lassen ? Oder vielleicht einen etwas detalierteren Error von PHP der mir sagen kann welche Variablen zurzeit wieviel Memory enthalten ?

Danke für jeden Tipp ...

Chrisi

  1. echo $begrüßung;

    Gobt es eine Möglichkeit sich eine Art Benschmark ausgeben zu lassen ? Oder vielleicht einen etwas detalierteren Error von PHP der mir sagen kann welche Variablen zurzeit wieviel Memory enthalten ?

    Von Haus aus ist bei PHP nichts dabei, außer vielleicht memory_get_usage() und memory_get_peak_usage().

    Danke für jeden Tipp ...

    Um dem Problem auf die Spur zu kommen, kann man ein die('irgendein_text'); in den Quelltext einbauen. Stirbt das Script an diesem die() ist noch alles in Ordnung und das die() kann weiter "nach hinten" verschoben werden. Stirbt es eher setzt man das die() weiter "nach vorn". So kann man die mögliche Ursache einkreisen.

    Außerdem gibt es da noch die Möglichkeit des schrittweisen Debuggens. Dazu benötigt man eine Debugger-Extension für PHP und ein Programm, was mit dieser zusammenarbeiten kann. Z.B. Eclipse mit PHPEclipse, um nur mal eins zu nennen.

    Eine außer Kontrolle geratene Rekursion (auch wenn sie ungewollt war) ist beispielswiese ein Kandidat für Speicherüberlauf.

    echo "$verabschiedung $name";

    1. Hallo Freunde des gehobenen Forumsgenusses,

      Eine außer Kontrolle geratene Rekursion (auch wenn sie ungewollt war) ist beispielswiese ein Kandidat für Speicherüberlauf.

      Da kann es aber auch passieren, dass nicht der Speicher aber dafür der Stack volläuft, weil sehr viele Funktionsaufrufe darin abgelegt werden.

      Mir ist das mit meinem Linkchecker passiert, ich muss den mal auf iterativ umbauen.

      Gruß
      Alexander Brock