socket_get_option
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
socket_get_option — Отримує опції потоку для сокету
Опис
socket_get_option(Socket $socket, int $level, int $option): array|int|false
Функция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 | ||
Повідомляє, чи буде socket зупинятися на socket_close(), якщо дані є. За умовчанням, коли сокет закритий, він спробує надіслати всі ненадіслані дані. У разі сокету, орієнтованого на підключення, socket_close() чекатиме, поки його одноранговий вузол підтвердить дані. |
Якщо 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"
. . можна вказати, щоб повідомити, що інтерфейс має бути обраний за допомогою правил маршрутизації. (може використовуватися тільки в 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) (або , либо ). Дляsocket_set_option() Будь-яке значення буде прийнято і перетворено на тип boolean, згідно з звичайними правилами PHP. | | IPV6_MULTICAST_LOOP
| Аналогічно IP_MULTICAST_LOOP
, но для IPv6. | int. SeeIP_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()****
Loading...
Дивіться також
- socket_create_listen() - Відкриває сокет на вказаному порту для прийняття з'єднань
- socket_set_option() - Встановлює опції для сокету