socket_set_nonblock

(PHP 4 >= 4.1.0, PHP 5)

socket_set_nonblockУстанавливает неблокирующий режим для файлового дескриптора fd

Описание

bool socket_set_nonblock ( resource $socket )

Функция socket_set_nonblock() устанавливает флаг O_NONBLOCK на сокете, указанном в параметре socket.

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

Список параметров

socket

Действующий ресурс сокета, созданный при помощи функции socket_create() или socket_accept().

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования socket_set_nonblock()

<?php
$socket 
socket_create_listen(1223);
socket_set_nonblock($socket);

socket_accept($socket);
?>

Этот пример создаёт слушающий сокет на всех интерфейсах на порту 1223 и устанавливает сокет в режим O_NONBLOCK. socket_accept() будет немедленно возвращать ошибку, если только именно в этот момент нету ожидающего соединения.

Смотрите также

  • socket_set_block() - Устанавливает блокирующий режим на ресурсе сокета
  • socket_set_option() - Устанавливает опции для сокета

Коментарии

Beware, when using this function within a loop (i.e. a demon with a socket). The socket_accept(), for example, emits a warning each time there is no incoming connection available to be read. My php error log file got huge in a matter of seconds, eventually crashing the server.

Of course, i used the @ before the function to take care of that problem.

[EDITOR: One can (and should) use socket_select to detect a new connection on a socket (it's a "readable" event)]
2009-09-11 10:46:02
http://php5.kiev.ua/manual/ru/function.socket-set-nonblock.html

    Поддержать сайт на родительском проекте КГБ