Я бы попробовал иметь родительский процесс, который разветвляет дочерние процессы. Родительский процесс может ждать, пока дочерний процесс завершен, и может видеть код выхода дочернего процесса. Таким образом, если 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 позволит скрипту работать без ограничения по времени.
Просто примечание о дочерних процессах, дочерний процесс должен быть допущен к завершению до уничтожения родительского процесса, в противном случае вы можете иметь процессы-зомби, и никто не владеет ими.