Можно ли установить ограничение по времени для блока кода?


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

//give this function 10 seconds to execute
$value = mega_function();// could take anything from 1-1000 seconds
//if 10 seconds have passed and the value is still not set, abort it and set $value = false;
2 5

2 ответа:

Нет. Вам придется либо

  • Вызов функции внутри внешнего файла с помощью curl или file_get_contents() - вы можете установить таймаут там

  • Следите за временем внутри mega_function() и return(), если это необходимо.

Что делает mega_function()?

Попробуйте заглянуть в потоки, но это может быть неудобно делать что-то подобное в PHP:)

Посмотрите на http://php.net/manual/en/function.pcntl-fork.php и все связанные с pnctl функции для создания childs, отправки сигналов между ними, ожидания завершения дочерних потоков или уничтожения потоков.