PHP скрипт перерыв в середине для разбора больших файлов - PullRequest
0 голосов
/ 29 августа 2018

Я использую cron для обновления инвентаризации в нашей базе данных из файла CSV инвентаризации ERP. Файл CSV инвентаря ERP содержит почти 19K record. Крон соберет все записи 1 на 1 и обновит соответствующий инвентарь в базе данных. Но с тех пор, как несколько дней среди 19К-записей, 13К-14К-записи анализируют только по файлам и разрыву сценария в середине.

Я пытался запустить скрипт напрямую из браузера, но он поднял ту же проблему. Ошибка не отображается в журнале ошибок.

Я думал, что проблема с тайм-аутом и увеличивает max_execution_time до 1500 (25min). Но проблема еще не решена.

Кто-нибудь может подсказать мне, как решить эту проблему? Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Ошибка не отображается в журнале ошибок.

Тогда первым делом вы должны проверить, что ваша регистрация ошибок работает как положено. Если это тайм-аут (PHP) или проблема с ограничением памяти, причина будет помечена, но о ней может не сообщаться.

Вы забыли сообщить нам как cron выполняет задачу - это через CLI SAPI или вы используете http-клиент (wget, curl и т. Д.) Для вызова через веб-сервер? SAPI имеют очень различное поведение и обычно используют отдельные файлы php.ini.

Я думал, что проблема с тайм-аутом

Потому что вы проверили, и он всегда взрывается с одинаковым интервалом после запуска?

Но так как несколько дней из 19K записей, 13K-14k записей только анализируют

А раньше это заняло меньше, чем определенное количество времени, чтобы завершить?

и увеличивает max_execution_time

Как? В сценарии? В (справа) php.ini? Обратите внимание, что если скрипт выполняется через веб-сервер, то на веб-сервере также может быть настроен тайм-аут.

Вы могли бы рассмотреть префикс вашего скрипта с:

set_time_limit(3000);
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

И захват stderr и stdout из скрипта.

0 голосов
/ 29 августа 2018

Попробуйте разделить csv на 2 файла и выполнить cron. Я думаю, что у вашего csv-файла есть проблема. если один из них выполняется без проблем, то процесс не имеет проблем, повторите процесс, чтобы найти блок с проблемой. несколько лет я работаю с интерфейсом, который читает файл для экспорта в SAP, иногда один специальный символ прерывает работу сценария.

0 голосов
/ 29 августа 2018

Вы проверяли cron-log? Какую операционную систему вы используете?

...