Как на PHP выполнить долгий скрипт? Добрый день!
Стоит задача по выполнению долгого скрипта на php, который выполняется через консоль (cron).
При попытке выполнить скрипт php -f test/update.php
Пример скрипта:// допустим $items имеет милион записей
ob_start();
$number = 0;
foreach($items as $key=>$item)
{
// скрипт обновления данных
if($number>=1000){
$number = 0;
ob_flush();
flush();
}
$number ++;
}
ob_end_clean();
Ошибка:[root@allpbspb www]# php -f test/update.php
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 1198085 bytes) in /home/bitrix/ext_www/website/www/test/update.php on line 168
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 1198085 bytes) in /home/bitrix/ext_www/website/www/test/update.php on line 168
[root@allpbspb www]# php -f test/update.php
PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 82 bytes) in /home/bitrix/ext_www/website/www/bitrix/modules/main/classes/general/usertype.php on line 2797
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 82 bytes) in /home/bitrix/ext_www/website/www/bitrix/modules/main/classes/general/usertype.php on line 2797

21 Авг 2019 в 06:33
238 +1
0
Ответы
1

Для исправления ошибки с памятью и выполнения долгого скрипта на PHP через консоль (cron) можно сделать следующее:

Увеличить лимит памяти для PHP скрипта. Можно это сделать в самом скрипте, используя функцию ini_set:ini_set('memory_limit', '1024M'); // Увеличение лимита памяти до 1ГБ

Если увеличение памяти не помогло, возможно стоит проверить наличие утечек памяти или оптимизировать сам скрипт.

Для выполнения долгого скрипта через консоль лучше использовать специальные инструменты, такие как Supervisor, который позволяет управлять процессами и перезапускать их при необходимости.

Также можно разбить долгий скрипт на более мелкие части и выполнить их последовательно.

Использовать кэширование результатов вычислений, чтобы уменьшить нагрузку на память.

Надеюсь, что эти советы помогут вам исправить ошибку и выполнить ваш долгий скрипт успешно. Если у вас остались вопросы, буду рад помочь!

20 Апр в 13:16
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир