Обработка ошибок с помощью curl_multi_exec - PullRequest
1 голос
/ 26 июля 2010

Мой вопрос вращается вокруг использования curl_multi_exec в PHP.Я использую код, подобный примеру, показанному по этой ссылке: http://www.rustyrazorblade.com/2008/02/curl_multi_exec/

При выполнении около 10 URL-адресов иногда возникает сообщение об ошибке: Fatal error: Maximum execution time of 30 seconds exceeded in... Это сообщение указывает на строку curl_multi_exec в коде.

Мне нужно продолжить обработку, несмотря на это, а также использовать средства, чтобы сохранить информацию о том, какой URL не удалось выполнить.

Может кто-нибудь помочь мне разобраться с этой ситуацией?

Спасибо!

Ответы [ 2 ]

1 голос
/ 26 июля 2010

Я бы попробовал иметь родительский процесс, который разветвляет дочерние процессы. Родительский процесс может ждать, пока дочерний процесс завершен, и может видеть код выхода дочернего процесса. Таким образом, если URL-адрес был обработан успешно, он будет иметь код выхода 0, в противном случае ненулевое значение представляет ошибку.

Для родительского процесса по-прежнему потребуется более длительный параметр max_execution_time, который можно установить в самом скрипте, в то время как у дочерних элементов параметр max_execution_time составляет 30 секунд.

Вот как раскошелиться на PHP http://www.electrictoolbox.com/article/php/process-forking/

Вы можете установить max_execution_time для родителя следующим образом

set_time_limit ( 0 )

0 позволит скрипту работать без ограничения по времени.

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

1 голос
/ 26 июля 2010

Если у вас есть доступ к файлу php.ini, вы можете увеличить настройку max_execution_time. Это время в секундах, в течение которого PHP-скрипт разрешается запускать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...