Обрыв php скрипта в середине для разбора больших файлов

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
36
3

Ответы 3

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

Я использую Linux-сервер. Да, я проверил журнал cron, о проблемах не сообщалось. Даже я пытаюсь запустить на вкладке браузера, но та же проблема.

Narayan 29.08.2018 12:06

Вы можете повысить уровень журнала. Пожалуйста, посмотрите эту ссылку unix.stackexchange.com/questions/412805/crond-log-level-mean‌ing

lemon soft 29.08.2018 13:12

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

Narayan 30.08.2018 06:57

Теперь я удалил скрипт из cron и запустил его на вкладках браузера, но никаких изменений не отображается.

Narayan 30.08.2018 06:58

«Там будет 19K записей, и на их обработку ушло почти 20 минут. Но сейчас обработано только 13-14K, и скрипт завершится почти через 10-11 минут» - тогда его очень вряд ли будет таймаутом - так что вы изменили тайм-аут. Хмммм.

symcbean 30.08.2018 10:32

Извините, @symcbean, я не получаю

Narayan 30.08.2018 11:06

Прочтите мой ответ выше. Проверьте свой отчет об ошибках. Примените изменения кода к своему сценарию. Запускаем скрипт. Прочтите журналы и вывод.

symcbean 30.08.2018 12:41

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

Другие вопросы по теме