Задать вопрос

PHP скрипт с огромным временем выполнения — как правильно такое писать?

Приветствую всех хабровчан

Есть скрипт парсинга xml файла с последующей записью в базу и закачкой картинок по урлам из этого файла. Скрипт использует SimpleXML. Сразу оговорюсь что писал его не я, я лишь сейчас довожу его до состояния нужного нам дописывая необходимые вещи.
Проблема состоит в том что объем файла который мы парсим очень большой — 8000-8500 записей. Плюс на каждую запись от 3 до 5 картинок, которые он качает. В результате скрипт парсит гдето 6500 записей и дальше тихо останавливается. Я пытался запустить этот скрипт на хостинге где можно поднять максимальное время выполнения — помогает но не полностью — парсит гдето 7500-7800 записей и останавливается. Может есть еще какие-то ограничения которые надо поднимать?

Прошу подсказать мне про методики написания таких скриптов обрабатывающих болльшие объемы данных. Через cron его запустить не удасться — так как это расширение к одной из цмс.
Буду благодарен за любые мысли и идеи
  • Вопрос задан
  • 17217 просмотров
Подписаться 30 Оценить Комментировать
Ответ пользователя UTD К ответам на вопрос (10)
@UTD
Использовал так:

set_time_limit(0);
ini_set('max_execution_time', 0);

вот так:

set_time_limit(0);

вот так:

set_time_limit(9000);

через какой-то время выдает 504 Gateway Time-out

как можно это побороть, что бы скрипт таки доделал свои функции за пределами времени и открыл обратно страницу без этой ошибки?

Или же можно как-то что бы он разбивал работу скрипта на парты, допустим в БД пишуться 15к строк, и что бы он при подходе к тайм ауту перезапускал счетчик тайм аута?
Ответ написан
Комментировать