[РЕШЕНО] CRON и ошибка "Allowed memory size of 134217728 bytes exhausted"

Опубликовано в Заметки

Исправляем ошибку Fatal error "Allowed memory size of 134217728 bytes exhausted" в процессе выполнения CRON-задач.

Ошибка вызвана нехваткой памяти, выделенной для исполняемого заданием скрипта.

[ErrorException] E_ERROR
Allowed memory size of 134217728 bytes exhausted (tried to allocate 24642928 bytes) (0)
/var/www/******/file.php:123
----------

Чтобы исправить ошибку, нужно в CRON-задаче в поле Команда передать значение лимита памяти "memory_limit", который должен выделиться для выполнения скрипта.

Содержимое поля "Команда" может выглядеть как показано ниже, но обычно у хостинг-провайдеров есть документация, в которой приводятся примеры создания CRON-задач.

/opt/php/8.1/bin/php -d default_charset=utf-8 -d short_open_tag=on -d memory_limit=1024M -f /var/www/*****/data/www/*****/bitrix/php_interface/include/catalog_export/cron_frame.php 9 >/var/www/*****/data/www/*****/bitrix/php_interface/include/catalog_export/logs/9.txt
  • /opt/php/8.1/bin/php - адрес библиотеки на сервере. Для разных версий PHP будут разные адреса.
  • -d default_charset=utf-8 - не обязательная опция, указывает кодировку, с которой будет выполняться скрипт
  • -d short_open_tag=on - опция позволяет использовать короткое открытие PHP "<?" вместо "<?php". На некоторых серверах при отключенной опции написание "<?" может вызвать фатальную ошибку.
  • -d memory_limit=1024M - лимит памяти, выделяемый скрипту
  • -f /var/www/*****/data/www/*****/bitrix/php_interface/include/catalog_export/cron_frame.php 9 - путь к исполняемому скрипту
  • >/var/www/*****/data/www/*****/bitrix/php_interface/include/catalog_export/logs/9.txt - файл, куда будет осуществляться вывод данных, если он предусмотрен функционалом скрипта, либо информации об ошибках, если вывод ошибок включен.

Tags: CRON Fatal error memory_limit short_open_tag default_charset