memory_limit: Wie funktioniert es?

9

Ich habe ein PHP-Skript, das ungefähr 2 Stunden lang läuft. Es ist ein Cron-Job. Der Cron-Job wird alle 4 Stunden ausgeführt.

Am Ende des Skripts zeige ich einige Speicherwerte an.

%Vor%

Das memory_limit in der php.ini war 128M und es hat nicht funktioniert. Ich erhöhe es auf 256M und jetzt funktioniert es.

Aber da die Speicherspitze des Skripts weniger als 2M ist ....

Wie funktioniert der Parameter memory_limit?

Ist es der Gesamtspeicher, der vom Skript verwendet wird? Wenn ja, wie kann ich es berechnen?

Ist es die Speicherspitze des Skripts? wenn ja, berechne ich es richtig?

Ich benutze PHP 5.3.16.

BEARBEITEN

Ich habe keine Fehlermeldungen. Wenn das Limit 128M war, wird das Skript ausgeführt, aber nie beendet.

    
Marm 06.09.2012, 14:33
quelle

1 Antwort

4

Versuchen Sie es mit einer Funktion, die Ihr Betriebssystem verwendet, um tatsächlichen Speicher wie diesen zu melden.

%Vor%

Ihr Skript verbraucht wahrscheinlich viel Speicher, den PHP bei der Rückgabe von memory_get_usage () nicht berücksichtigt (was den Heap btw betrifft). Stapel zugewiesene Variablen wären bis zu dem Zeitpunkt, zu dem memory_get_usage () aufgerufen und zurückgegeben wurde, geklärt.

Sie sollten auch versuchen, diese Funktion und andere an anderen Punkten während der Ausführung auszuführen, z. nach großen MySQL-Aufrufen oder Dateiverarbeitung. memory_get_peak_usage () funktioniert möglicherweise nicht auf allen Betriebssystemen, besonders abhängig von den Kompilieroptionen.

    
Jared Kipe 06.09.2012, 15:21
quelle

Tags und Links