Я получаю ошибку памяти в задании 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
Я работаю на Debian Squeeze, полностью обновлен.
Очевидное решение состоит в том, что cli имеет низкий предел памяти (64 МБ). Тем не менее, /etc/php5/cli/php.ini говорит, что это неограниченно.
$ cat /etc/php5/cli/php.ini | grep memory_limit
memory_limit = -1
Я где-то читал, что это может отличаться для разных пользователей, и так как процесс выполняется как www-data, я запустил:
$ sudo -u www-data -s
$ php -i | grep memory_limit
memory_limit => -1 => -1
suhosin.memory_limit => 0 => 0
Даже apache / php.ini имеет более высокий предел, чем утверждает ошибка:
$ sudo cat /etc/php5/apache2/php.ini | grep memory_limit
memory_limit = 128M
Чего мне не хватает? Где этот предел памяти?
При тестировании php-версии CLI
5.5.9
выясняется, что в cli он по умолчанию имеет неограниченный лимит памяти, и приphp -d memory_limit=4G my_script.php
его установке будет установлено ограничение.источник
Если вы устанавливаете PHP как модуль Apache (отметьте «Server API»
phpinfo()
), вы должны вызывать его через веб-браузер командной строки (wget, curl, lynx, ...) в задании cron, что-то вроде этого:источник