Отключить сборку мусора - PullRequest
8 голосов
/ 28 июля 2011

Как отключить сборку мусора для долго работающего скрипта php cli? Я занимаюсь сбросом переменных в скрипте.

Ответы [ 4 ]

11 голосов
/ 28 июля 2011

Сброс переменных не свободной памяти!Он просто удаляет ссылку из переменной на соответствующее значение.Как только любое значение имеет ref-count 0, GC собирает значение и освобождает выделенную ему память.Если бы было возможно полностью отключить GC, вы бы сломали свой интерпретатор (в лучшем случае): у вас будет много много не связанных данных в вашей памяти, которые никогда не будут очищены.Это называется «утечка памяти».

Есть ли сборка мусора в PHP?

4 голосов
/ 15 мая 2013

Я находился в аналогичной ситуации, в моем случае проблема заключалась в том, что Zend Server , работающий как cli, зависал произвольно и очень часто.В сообщении, которое я нашел, способ обойти это включает в себя отключение «сборщика мусора»

Как сказано в других сообщениях, вы можете сделать это, отключив zend.enable_gc

в php.ini

zend.enable_gc = Off

также вы можете изменить свой скрипт инициализации Php или изменить его непосредственно в cli,

$ php -d zend.enable_gc=0 your_script.php

(извините за повторное открытие такогостарый пост) Надеюсь, это кому-то поможет

2 голосов
/ 28 июля 2011

Вы можете отключить сборщик мусора с помощью

или через настройку ini:

Однако использование unset не освобождает память. Он только помечает переменные для GC, чтобы собрать afaik. Подробнее см. Главу о Сборка мусора в Руководстве по PHP.

1 голос
/ 28 июля 2011

Источник: php.net :

Besides changing the zend.enable_gc configuration setting, it is also possible to turn the garbage collecting mechanism on and off by calling gc_enable() or gc_disable() respectively. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...