PHP Conference Nagoya 2025

socket_set_block

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

socket_set_blockУстанавливает блокирующий режим на сокете

Описание

socket_set_block(Socket $socket): bool

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

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

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

socket

Экземпляр Socket, созданный при помощи функции socket_create() или socket_accept().

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

Функция возвращает true в случае успешного выполнения или false, если возникла ошибка.

Список изменений

Версия Описание
8.0.0 Теперь параметр socket ожидает экземпляр класса Socket; раньше параметр ожидал ресурс (resource).

Примеры

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

<?php
$socket
= socket_create_listen(1223);
socket_set_block($socket);

socket_accept($socket);
?>

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

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

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

Добавить

Примечания пользователей 1 note

up
2
laacz at laacz dot lv
9 years ago
Besides true and false socket_set_block might return NULL if you're not too careful. That would happen when passing non socket resource as first parameter.

E.g. socket_set_block(false)) would return NULL and emit warning that you're trying to do things with non-socket.
To Top