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

Spider8411

Новичок
Приветствую всех посетителей форума.

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

Прошу подсказать мне про методики написания таких скриптов обрабатывающих болльшие объемы данных. Через cron его запустить не удасться - так как это расширение к одной из цмс.
Бкдк благодарен за любые мысли и идеи
 

shelestov

я тут часто
Как вариант заливать картинки отдельным потоком (скриптом).
При разборе XML формировать очередь картинок и позже сливать их. Можно в несколько потоков, если ресурсы позволяют.
 

Spider8411

Новичок
Даже без картинок процентов 10 записей остается не обработанными. И не обрататываются - сколько бы времени я не добавлял. Видимо есть еще какието серверные параметры .
 

shelestov

я тут часто
Тогда мой совет выяснить что именно убивает время.
Просто парсинг XML из 8000 записей - ерунда.
 

A1x

Новичок
непонятна причина остановки, возможно не хватает памяти потому что SimpleXML загружает весь файл в память
Для разбора очень больших XML используются SAX парсеры, которые не грузят весь файл в память
на ПХП это или XML Parser или XMLReader
 

Тугай

Новичок
Я делаю за два прохода, сначала xml загоняется в таблицу бд с дополнительным флажком done.
Второй проход который грузит картинки, работает уже с таблицой базы и помечает обработанные строчки.
Для пользователя это кнопки "Загрузть XML", "Загрузить кратинки", "Сбросить".
Приходится несколько раз кликать на "Загрузить картинки" пока список не исчерпается.

Можно атоматизировать кликание на "Загрузить картинки" через ajax.
 

Spider8411

Новичок
Всем отозвавшимся большое спасибо.
еще пара вопросов(скорее догадок).
1. Может ли быть причинной проблем переменная post_max_size или это тут совсем не причем?
2. У меня хостинг позволяет выставять очень большие значения времени выполнения скрипта. Но с определенного времени это перестает помогать и последние 10% не беррет никак. ССкорее всего памяти не хватает - так?
 

shelestov

я тут часто
Всем отозвавшимся большое спасибо.
еще пара вопросов(скорее догадок).
1. Может ли быть причинной проблем переменная post_max_size или это тут совсем не причем?
2. У меня хостинг позволяет выставять очень большие значения времени выполнения скрипта. Но с определенного времени это перестает помогать и последние 10% не беррет никак. ССкорее всего памяти не хватает - так?
Здесь не гадать надо а дебажить.
Для начала включить вывод всех ошибок. Если дело в памяти обязана выдаться соответствующая ошибка.
 
Сверху