max_execution_time Как срабатывает?

fast2111

Новичок
max_execution_time Как срабатывает?

Сталкнулся с стакой проблемой:
скрипт № 1
PHP:
ini_set("max_execution_time", 3);
echo "start\n";
while (1) {
}
echo "stop\n";
Результат: Fatal error: Maximum execution time of 3 seconds exceeded ...

скрипт № 2
PHP:
ini_set("max_execution_time", 3);
Открыли сокет.
Пишем в сокет.
Получаем ответ.
Закрыли сокет.
Здесь просто должны получеть ответ от сервера что все хорошо. Но часто возникает проблема что сокет "слетает" и скрипт ждет ответа до потери пульса...
В чем проблема?
Использую PHP 5.2.3 (cli) и socket_create(AF_UNIX, SOCK_STREAM, 0)
 

phprus

Moderator
Команда форума
fast2111
В чем проблема?
В том, что max_execution_time не учитывает время во время которого скрипт ожидает завершения блокирующего системного вызова.
Для установки таймаута на сокеты используй [m]socket_set_timeout[/m] или используй неблокирующие сокеты([m]socket_set_nonblock[/m]) и функцию [m]socket_select[/m]
 
Сверху