Rya*_*n H 52 php command-line-interface cron debian-squeeze
我在 php cron 作业中遇到内存错误:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /opt/matrix/core/lib/DAL/DAL.inc on line 830
crontab适用的部分有:
$ sudo crontab -u www-data -l
MAILTO=root
# m h dom mon dow command
*/15 * * * * php /opt/matrix/core/cron/run.php /opt/matrix
Run Code Online (Sandbox Code Playgroud)
我在 Debian Squeeze 上运行,完全更新。
显而易见的解决方案是 cli 的内存限制较低(64MB)。但是,/etc/php5/cli/php.ini 说它是无限的。
$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
Run Code Online (Sandbox Code Playgroud)
我在某处读到它对于不同的用户可能会有所不同,并且由于该进程以 www-data 的形式运行,因此我运行了:
$ sudo -u www-data -s
$ php -i | grep memory_limit
memory_limit => -1 => -1
suhosin.memory_limit => 0 => 0
Run Code Online (Sandbox Code Playgroud)
甚至 apache/php.ini 的限制也比错误声称的要高:
$ sudo cat /etc/php5/apache2/php.ini | grep memory_limit
memory_limit = 128M
Run Code Online (Sandbox Code Playgroud)
我错过了什么?这个内存限制在哪里?
DTe*_*est 105
IIRC,CLI 不支持无限制的 memory_limit(我将尝试为此找到源),但现在,尝试将其传递到命令中:
php -d memory_limit=128M my_script.php
Run Code Online (Sandbox Code Playgroud)
更新
显然,我梦想着 php cli 不支持无限 memory_limit。无论如何,似乎忽略了 ini 中的值。最简单的解决方案应该是在调用脚本的 php 命令中专门设置它。
更新2
要回答内存限制来自何处的问题,它很可能是使用“ini_set”在脚本本身中设置的。
归档时间: |
|
查看次数: |
139754 次 |
最近记录: |