Wie deaktiviere ich die Garbage Collection für ein lang laufendes php cli-Skript? Ich behandle das Zurücksetzen von Variablen im Skript.
Antworten
Zu viele Anzeigen?Das Zurücksetzen von Variablen bewirkt nicht freier Speicher! Es wird lediglich der Verweis von der Variablen auf den entsprechenden Wert entfernt. Sobald ein Wert einen ref-count von 0
sammelt der GC den Wert ein und gibt den ihm zugewiesenen Speicher frei. Wenn es möglich wäre, die GC vollständig zu deaktivieren, würden Sie Ihren Interpreter (im besten Fall) zerstören: Sie werden viele nicht referenzierte Daten in Ihrem Speicher haben, die nie bereinigt werden. Das nennt man "Speicherleck".
In meinem Fall hing das Problem mit dem Zend-Server läuft als cli -- Es stürzte oft und willkürlich ab. Im Internet fand ich etwas über die Deaktivierung des 'Garbage Collectors'
Um dies zu tun,
in der Datei php.ini
zend.enable_gc = Off
Sie kann auch direkt in der Klientel geändert werden
$ php -d zend.enable_gc=0 your_script.php
Sie können den Garbage Collector deaktivieren mit
oder über die Ini-Einstellung:
Allerdings ist die Verwendung von unset
gibt keinen Speicher frei. Es markiert nur Variablen für die GC zu sammeln afaik. Siehe das Kapitel über Garbage Collection im PHP Manual für Details.