(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Получает опции потока для сокета
Функция socket_get_option() извлекает значение для опции, указанной параметром option
для заданного socket
.
socket
Экземпляр Socket, созданный с помощью socket_create() или socket_accept().
level
Параметр level
указывает уровень протокола, на котором находится опция. Например, для получения опций на уровне сокета, должен использовать параметр level
, равный SOL_SOCKET
. Другие уровни, такие как TCP
, можно использовать, указав номер протокола этого уровня. Номера протоколов можно найти с помощью функции getprotobyname().
option
Опция | Описание | Тип |
---|---|---|
SO_DEBUG | Сообщает, записывается ли отладочная информация. | int |
SO_BROADCAST | Сообщает, поддерживается ли передача широковещательных сообщений. | int |
SO_REUSEADDR | Сообщает, могут ли локальные адреса использоваться повторно. | int |
SO_REUSEPORT | Сообщает, могут ли локальные порты использоваться повторно. | int |
SO_KEEPALIVE | Сообщает, поддерживаются ли соединения с периодической передачей сообщений. Если подключённый сокет не отвечает на эти сообщения, подключение прерывается и процессы записи в этот сокет уведомляются сигналом SIGPIPE. | int |
SO_LINGER | Сообщает, будет ли Если l_onoff отличен от нуля, а l_linger равно нулю, все неотправленные данные будут отброшены и RST (сброс) отправлен одноранговому узлу в случае сокета, ориентированного на подключение. С другой стороны, если l_onoff и l_linger отличны от нуля, socket_close() будет блокироваться до тех пор, пока все данные не будут отправлены или если время, указанное в l_linger, не истечёт. Если сокет не блокируется, socket_close() потерпит неудачу и вернёт ошибку. | array. Массив будет содержать два ключа: l_onoff и l_linger. |
SO_OOBINLINE | Сообщает, выходит ли socket из встроенных данных. | int |
SO_SNDBUF | Сообщает размер отправленного буфера. | int |
SO_RCVBUF | Сообщает о размере полученного буфера. | int |
SO_ERROR | Сообщает информацию о статусе ошибки и очищает её. | int (не может быть установлен socket_set_option()) |
SO_TYPE | Сообщает о типе socket (например, SOCK_STREAM ). | int (не может быть установлен socket_set_option()) |
SO_DONTROUTE | Сообщает, что исходящие сообщения обходят стандартные средства маршрутизации. | int |
SO_RCVLOWAT | Сообщает минимальное количество байтов для обработки операций ввода socket . | int |
SO_RCVTIMEO | Сообщает значение времени ожидания для операций ввода. | array. Массив будет содержать два ключа: sec, который является частью секунд для значения времени ожидания и usec, который является микросекундной частью значения времени ожидания. |
SO_SNDTIMEO | Сообщает значение времени ожидания, указывающее количество времени, которое блокирует функция вывода, поскольку управление потоком предотвращает отправку данных. | array. Массив будет содержать два ключа: sec, который является частью секунд для значения времени ожидания и usec, который является микросекундной частью значения времени ожидания. |
SO_SNDLOWAT | Сообщает минимальное количество байтов для обработки операцией вывода socket . | int |
TCP_NODELAY | Сообщает, отключён ли алгоритм Nagle TCP. | int |
MCAST_JOIN_GROUP | Присоединяется к многоадресной группе. | массив (array) с ключами "group" , указав строку (string) с многоадресным адресом IPv4 или IPv6 и "interface" , указав либо номер интерфейса (тип int), либо строку (string ) с именем интерфейса, например "eth0" . 0 можно указать, чтобы сообщить, что интерфейс должен быть выбран с использованием правил маршрутизации. (может использоваться только в socket_set_option()) |
MCAST_LEAVE_GROUP | Оставляет многоадресную группу. | массив (array). Смотрите MCAST_JOIN_GROUP для получения дополнительной информации. (может использоваться только в socket_set_option()) |
MCAST_BLOCK_SOURCE | Блокирует пакеты, поступающие из определённого источника в определённую группу многоадресной передачи, которые должны быть предварительно соединены. | массив (array) с такими же ключами, как у MCAST_JOIN_GROUP , плюс один дополнительный ключ, source , который представляет строку (string), указывающую адрес IPv4 или IPv6 источника, который должен быть заблокирован. (может использоваться только в socket_set_option()) |
MCAST_UNBLOCK_SOURCE | Разблокирует (начинает приём снова) пакеты, поступающие с определённого исходного адреса в определённую группу многоадресной передачи, которая должна предварительно соединена. | массив (array) с таким же форматом, как у MCAST_BLOCK_SOURCE . (может использоваться только в socket_set_option()) |
MCAST_JOIN_SOURCE_GROUP | Получать пакеты, предназначенные для конкретной группы многоадресной передачи, исходный адрес которого совпадает определённому значению. | массив (array) с тем же самым форматом, что у MCAST_BLOCK_SOURCE . (может использоваться только в socket_set_option()) |
MCAST_LEAVE_SOURCE_GROUP | Остановить приём пакетов, предназначенных для конкретной группы многоадресной передачи, исходный адрес которого совпадает определённому значению. | массив (array) с тем же самым форматом, что у MCAST_BLOCK_SOURCE . (может использоваться только в socket_set_option()) |
IP_MULTICAST_IF | Исходящий интерфейс для многоадресных пакетов IPv4. | Любое целое число (int), указывающее номер интерфейса или строку (string) с именем интерфейса, например, eth0 . Значение 0 может использоваться для указания, что таблица маршрутизации используется для выбора интерфейса. Функция socket_get_option() возвращает индекс интерфейса. Обратите внимание, что в отличие от C API, эта опция НЕ принимает IP-адрес. Это устраняет разницу в интерфейсе между IP_MULTICAST_IF и IPV6_MULTICAST_IF . |
IPV6_MULTICAST_IF | Исходящий интерфейс для многоадресных пакетов IPv6. | То же, что и IP_MULTICAST_IF . |
IP_MULTICAST_LOOP | Политика петли групповой передачи для пакетов IPv4 включает или отключает передачу исходящих многоадресных рассылок, которые должны быть предварительно присоединены. Эффект, однако, различается, в зависимости от применения в Unix или Windows: в первом случае на пути получения, а во втором - на пути отправки. | целое число (int) (либо 0 , либо 1 ). Для socket_set_option() любое значение будет принято и преобразовано в тип boolean, согласно обычным правилам PHP. |
IPV6_MULTICAST_LOOP | Аналогично IP_MULTICAST_LOOP , но для IPv6. | int. See IP_MULTICAST_LOOP . |
IP_MULTICAST_TTL | Время ожидания исходящих пакетов IPv4 для многоадресной передачи. Это должно быть значение между 0 (не оставлять интерфейс) и 255. Значение по умолчанию - 1 (достигается только локальная сеть). | целое число (int) между 0 и 255. |
IPV6_MULTICAST_HOPS | Аналогично IP_MULTICAST_TTL , но для пакетов IPv6. Значение -1 также принимается, что означает использование маршрута по умолчанию. | целое число (int) между 0 и 255. |
SO_MARK | Устанавливает идентификатор сокета для фильтрации пакетов в Linux. | int |
SO_ACCEPTFILTER | Добавляет фильтр приёма на прослушиваемый сокет (FreeBSD/NetBSD). Модуль ядра фильтра приёма должен быть предварительно загружен в FreeBSD (например, accf_http). | Строка (string) имя фильтра (длина не более 15). |
SO_USER_COOKIE | Устанавливает идентификатор сокета для фильтрации пакетов в FreeBSD. | int |
SO_RTABLE | Устанавливает идентификатор сокета для фильтрации пакетов в OpenBSD. | int |
SO_DONTTRUNC | Сохраняет непрочитанные данные. | int |
SO_WANTMORE | Подсказывает, когда будет доступно больше данных. | int |
TCP_DEFER_ACCEPT | Не уведомляет слушающий сокет, пока данные не будут готовы. | int |
SO_INCOMING_CPU | Получает/устанавливает сродство к процессору для сокета. | int |
SO_MEMINFO | Получает meminfo сокета. | int |
SO_BPF_EXTENSIONS | Получает поддерживаемые ядром модули BPF для присоединения к сокету. | int |
SO_SETFIB | Устанавливает таблицу маршрутизации (FIB) сокета (только FreeBSD). | int |
SOL_FILTER | Фильтры, приписываемые сокету (только для Solaris/Illumos). | int |
TCP_KEEPCNT | Устанавливает максимальное количество зондов keepalive, которые TCP должен отправить перед разрывом соединения. | int |
TCP_KEEPIDLE | Устанавливает время, в течение которого соединение должно простаивать. | int |
TCP_KEEPINTVL | Устанавливает время между отдельными зондами keepalive. | int |
TCP_KEEPALIVE | Устанавливает время, в течение которого соединение должно простаивать (только для macOS). | int |
TCP_NOTSENT_LOWAT | Устанавливает предельное количество неотправленных данных в очереди на запись потоком сокета (только для Linux). | int |
Возвращает значение заданной опции или false
, если возникла ошибка.
Версия | Описание |
---|---|
8.0.0 | socket теперь экземпляр класса Socket; ранее был ресурсом (resource). |
Пример #1 Пример использования socket_get_option()
<?php
$socket = socket_create_listen(1223);
$linger = array('l_linger' => 1, 'l_onoff' => 1);
socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger);
var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));
?>