@olesbalihin

PHP-скрипт полностью не выполняется. Какая причина?

Делаю php парсер на локалке (openserver).
Установлены значениях в пхп:
ignore_user_abort(true);
ini_set('error_log', 'err.log');
ini_set('max_execution_time', 0);
error_reporting(E_ALL);
set_time_limit(0);
В mysql установлено: wait_timeout = 86400
В самом скрипте нет того, что могло бы его остановить (die, break и подобное), памяти он потребляет мало, сбрасывает не нужные переменные. Парсер должен работать часов 12 (пока не спарсит все товары), но он иногда без причины отключается (может через пол часа, а может через 8), но нет никакой ошибки (базы и пхп), даже в консоли через какую я запускаю скрипт ничего не показывает (даже не отмечает действие как завершенное), тем не менее полностью пропадает активность, в базу ничего не записывает, в файл для логов тоже. Место откуда парсю работает
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vism
любая, да миллион причин от железа до софта и искать можете от пары часов до пары лет и не найти

Поменяйте архитектуру, чтоб скрипт работал не 12 часов, а много мелких скриптов, которые будут добавлять пачки задач, выполняться, писать логи в базу

через крон например
Ответ написан
aleksejjjj
@aleksejjjj
Во-первых проверить все логи. Nginx/Apache или что у вас там, php и прочее. "памяти он потребляет мало" это только с ваших слов. Не удивлюсь если причина падения именно в перерасходе памяти.

Во-вторых добавьте подробные логи для отладки. Типа
Log::write('Получаем страницу ' . $url);
Log::write('Парсим страницу ' . $url);
Log::write('Пишем в базу данные с ' . $url);

Можете туде же ещё потребление памяти в эти моменты сохранять. Тогда после падения у вас будет чёткое понимание в какой момент оно упало.

Ну и в-третьих может и опенсервер падает. Я бы рекомендовал переходить на докер/виртуалки и прочее. Это поделие не для серьёзных задач
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы