Установить тайм-аут для определенной функции / блока кода (не весь сценарий)? - PullRequest
8 голосов
/ 06 августа 2010

У меня есть php-скрипты, которые вызывают perl-скрипты для выполнения различных задач, и иногда я получаю его там, где он просто продолжается и не получает ответа, это основано на переменной, которая передается в perl-скриптделаю много разных подряд, так что я не могу получить отладку напрямую, так как у меня нет ответа от perl ...

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

Я думал, что что-то подобное может работать, но я неНе думаю, что он будет динамически обновлять переменную $ time, но, возможно, есть способ заставить это работать?Любой совет ценится

$time = time();
$timeout = $time + 5; //just as an example

do {

// do stuff
} while ($time < $timeout)

Ответы [ 2 ]

8 голосов
/ 06 августа 2010

Лучше всего было бы использовать proc_open, поспать в течение времени ожидания и затем вызвать proc_terminate, если процесс еще не завершен.

Подробнее о семействе proc_ * см. http://us3.php.net/manual/en/book.exec.php.

0 голосов
/ 06 августа 2010

Ну, я не уверен, что на этот вопрос будет ответ, основанный на том, как я его задал, поэтому я собираюсь сделать вызов perl, когда php не ждет ответа, и perl напишет вывод в текстовый файл, затем php прочитайте это через указанное количество секунд, я думаю, что это самый простой способ сделать это, просто для небольшого приложения, которое я запускаю на локальном сервере

...