Задать вопрос
Haotik
@Haotik
PHP мидл без фреймворков

Как запустить php скрипт что бы он не отлетел по тайм ауту?

День добрый.
Есть скрипт который должен распарсить почтовый ящик клиента с mail.ru и перелить его в бд.
Отдельные части скрипта протестированы и реализованы сделаны тесты на небольшом количестве писем.

Сейчас нужно запустить его на выкачку ящика полностью. Но в ящике 20 тысяч писем и время выполнения скрипта получается порядка 48 часов.
Скрипт запускается из консоли сервера.
В самом файле стоит set_time_limit(0);
Однако где то минут через 20-30 скрипт вылетает с сообщением "Killed".

т.е. как бы понятно что скрипт убивает сам сервер, но не понятно почему. Где можно искать причину такого поведения?

P.S
На тестах ставили ограничение в 2 часа и 500 писем. скрипт отрабатывал до конца

Нет возможности промаркировать письма что бы отследить что уже выкачано, а что нет чтобы например качать по кусочкам.
Также ящик весьма активный и id писем между запусками могут поменяться, т.е. использовать их для идентификации сообщений не получилось.

По логике скрипта, сперва выкачиваются все письма потом они заливаются в бд. - не указал в изначальной задаче.
но как это решить и в процессе чистить память я знаю. Главное - что бы скрипт мог отработать 2 дня без прерываний
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Простой 12 комментариев
Решения вопроса 1
Haotik
@Haotik Автор вопроса
PHP мидл без фреймворков
Спасибо за помощь.
В целом в скрипте mysqli после каждого запроса потихоньку кушал память до переполнения из за этого скрипт и выпадал с killed
сейчас этот момент оптимизировал 4 час скрипт работает нормально.

Причину почему запрос падал увидел благодаря команде dmesg -T

И отдельное спасибо что рассказали что у письма есть еще отдельный id по которому можно его идентифицировать независимо от id под которым возвращает письма imap. (подробнее есть в комментариях)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы