Есть ли способ прервать блок кода, если он слишком длится в PHP? Возможно, что-то вроде:
//Set the max time to 2 seconds
$time = new TimeOut(2);
$time->startTime();
sleep(3)
$time->endTime();
if ($time->timeExpired()){
echo 'This function took too long to execute and was aborted.';
}
Это не должно быть точно так же, как указано выше, но существуют ли какие-либо собственные PHP-функции или классы, которые делают что-то вроде этого?
Изменить: ответ Ben Lee с помощью pcnt_fork
будет идеальным решением, за исключением того, что он недоступен для Windows. Есть ли другой способ сделать это с помощью PHP, который работает для Windows и Linux, но не требует внешней библиотеки?
Изменить 2. Решение XzKto работает в некоторых случаях, но не последовательно, и я не могу, похоже, поймать исключение, независимо от того, что я пробую. Вариант использования - это время ожидания для unit test. Если тест истечет, я хочу его закончить, а затем перейти к следующему тесту.