Я запускаю cron, чтобы обновить инвентарь в нашей базе данных из CSV-файла инвентаризации ERP. CSV-файл инвентаризации ERP содержит почти 19K record. Cron выберет все записи 1 за 1 и обновит соответствующий инвентарь в базе данных. Но так как несколько дней из 19К записей только 13К-14к записей анализировать по файлам и скрипту ломается посередине.
Я также пытался запустить скрипт непосредственно из браузера, но возникла та же проблема. В журнале ошибок нет ошибок.
Я думал, что это проблема с таймаутом и увеличивает max_execution_time до 1500 (25min). Но вопрос пока не решен.
Кто-нибудь может подсказать мне, как решить эту проблему? Заранее спасибо!






Вы проверяли cron-log? Какую операционную систему вы используете?
Вы можете повысить уровень журнала. Пожалуйста, посмотрите эту ссылку unix.stackexchange.com/questions/412805/crond-log-level-meaning
No error is displayed in the error log.
Тогда ваше первое действие - убедитесь, что ваш журнал ошибок работает должным образом. Если это тайм-аут (PHP) или проблема с ограничением памяти, тогда причина будет помечена, но о ней может не сообщаться.
Вы забыли сообщить нам, что как cron запускает задачу - это через CLI SAPI или вы используете http-клиент (wget, curl и т. д.) Для вызова через веб-сервер? SAPI ведут себя по-разному и обычно используют отдельные файлы php.ini.
I was thinking that its timeout issue
Потому что вы проверили, и он всегда срабатывает с одним и тем же интервалом после запуска?
But since a few days among 19K records 13K-14k records only parse
А раньше это занимало меньше установленного времени?
and increases the 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 из скрипта.
Раньше там были те же 19K записей, и обработка занимала почти 20 минут. но сейчас обрабатывается только 13-14К, а завершение скрипта занимает почти 10-11 мин. Я увеличил max_execution_time из php.ini
Теперь я удалил скрипт из cron и запустил его на вкладках браузера, но никаких изменений не отображается.
«Там будет 19K записей, и на их обработку ушло почти 20 минут. Но сейчас обработано только 13-14K, и скрипт завершится почти через 10-11 минут» - тогда его очень вряд ли будет таймаутом - так что вы изменили тайм-аут. Хмммм.
Извините, @symcbean, я не получаю
Прочтите мой ответ выше. Проверьте свой отчет об ошибках. Примените изменения кода к своему сценарию. Запускаем скрипт. Прочтите журналы и вывод.
Попробуйте разделить csv на 2 файла и запустить cron, я думаю, у вашего файла csv есть проблемы. если один из них выполняется без проблем, значит, у процесса нет проблем, повторите процесс, чтобы найти проблемный блок. Несколько лет я работаю с интерфейсом, который читает файл для экспорта в SAP, иногда один специальный символ прерывает скрипт.
Я использую Linux-сервер. Да, я проверил журнал cron, о проблемах не сообщалось. Даже я пытаюсь запустить на вкладке браузера, но та же проблема.