如何为长时间运行的php cli脚本禁用垃圾回收?我正在处理脚本中未设置的变量。
答案 0 :(得分:11)
取消设置变量不可用内存!它只是将变量的引用移到相应的值。一旦任何值的引用计数为0
,GC就会收集该值并释放其分配的内存。如果可以完全禁用GC,你将破坏你的解释器(在最好的情况下):你的内存中会有许多未引用的数据,永远不会被清除。多数民众赞成称“内存泄漏”。
答案 1 :(得分:4)
我处于类似的情况,在我的情况下,问题是 Zend Server 正在运行,因为cli是任意崩溃的,并且经常发生。在我发现的一篇文章中,一种解决这个问题的方法涉及禁用“垃圾收集器”
正如其他帖子所说,您可以通过禁用zend.enable_gc来实现此目的
php.ini中的
zend.enable_gc = Off
您也可以修改您的Php init脚本,或直接在cli中更改
$ php -d zend.enable_gc=0 your_script.php
(重新打开这么老的帖子) 希望这有助于某人
答案 2 :(得分:2)
您可以使用
禁用垃圾收集器或通过ini设置:
但是,使用unset
不会释放内存。它只标记GC收集afaik的变量。请参阅Garbage Collection in the PHP Manual for details.
答案 3 :(得分:1)
来源: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.