выполнение php cURL-скрипта в течение длительного времени без изменения настроек php.ini - PullRequest
2 голосов
/ 25 января 2010

Сценарий

У меня есть старый блог на блоггере, который содержит тысячи изображений и постов, я уже импортировал посты из блоггера в wordpress, используя их сервис импорта (который не импортирует изображения), теперь я хочу написать скрипт php cURL, который будет Загрузите все изображения с моего старого блога в WordPress.

Проблема

Я уже написал сценарий, который просматривает все сообщения, находит ссылки на изображения блоггера, рекурсивно загружает ссылки и сохраняет их локально для установки в WordPress, но проблема в том, что сценарий останавливается, если он занимает больше времени, чем max_execution_time который обычно устанавливается на 30 секунд. Теперь я не хочу менять настройки в файле php.ini. Есть ли какой-нибудь способ, которым я могу продолжать выполнение моего скрипта в течение этого долгого времени или какую-то другую альтернативу ... например, выполнение в пакетном режиме или что-то еще ...

Причина не изменения настроек php.ini заключается в том, что я хочу выпустить этот скрипт как плагин с открытым исходным кодом для WordPress, и не многие имеют доступ к своему файлу php.ini на сервере, и многие не любят изменять настройки просто один скрипт, который может быть запущен только один раз.

Спасибо за помощь ....

Ответы [ 2 ]

4 голосов
/ 25 января 2010

Вы можете изменить некоторые настройки ini во время выполнения, чтобы они влияли только на текущее воплощение скрипта. В этом случае есть специальная функция, set_time_limit () :

set_time_limit(0);

Это эффективно снимет ограничение по времени выполнения вашего скрипта. Все остальные сценарии не будут затронуты.

0 голосов
/ 14 марта 2010

Если вы можете вызвать set_time_limit в течение другого ненулевого времени, вы можете сбросить ограничение по времени при каждой итерации, поскольку таймер сбрасывается при каждой установке.

Или лучше сказать в документах:

При вызове set_time_limit () перезапускается счетчик таймаута от нуля . В Другими словами, если время ожидания по умолчанию 30 секунд и 25 секунд в выполнение скрипта вызов, такой как set_time_limit (20) сделано, скрипт будет работать в общей сложности 45 секунд до истечения времени ожидания.

Просто убедитесь, что для каждой итерации вы выбрали достаточно длительное время

...