fsockopen
(PHP 4, PHP 5, PHP 7, PHP 8)
fsockopen — Відкриває з'єднання з інтернет-сокетом або доменним сокетом Unix
Опис
fsockopen( string $hostname, int $port = -1, int &$error_code = null, string &$error_message = null, ?float $timeout = null): resource|false
Устанавливает соединение с сокетом ресурсаhostname
PHP підтримує цільові ресурси в інтернеті та Unix-доменах у тому вигляді, як вони описані в Список підтримуваних транспортних протоколів. Список підтримуваних транспортів можна отримати за допомогою функції stream_get_transports()
За умовчанням сокет буде відкритий у режимі блокування. Переключити його в неблокуючий режим можна функцією stream_set_blocking()
stream_socket_client() виконує аналогічну функцію, але надає ширший вибір налаштувань з'єднання, що включає встановлення неблокуючого режиму та можливість надання потокового контексту.
Список параметрів
hostname
Якщо встановлена Підтримка OpenSSL, можна використовувати SSL або TLS-протоколи з'єднань поверх TCP/IP при підключенні до віддаленого хоста. Для цього перед hostname
нужно добавить префиксssl://
илиtls://
port
Номер порту. Його можна не вказувати, передавши -1
для тих протоколів, які не використовують порти, наприклад unix://
error_code
Якщо цей параметр надати, у разі виникнення помилки системного виклику функції connect()
він прийматиме номер цієї помилки.
Если значение параметраerror_code
одно , а функція повернула false
, отже помилка сталася до виклику connect()
. Найчастіше це свідчить про проблеми при ініціалізації сокету.
error_message
Повідомлення про помилку у вигляді рядка.
timeout
Время ожидания соединения в секундах. Если**null
**, використовується налаштування php.ini default_socket_timeout
Зауваження :
Якщо потрібно встановити час очікування/запису даних через сокет, використовуйте функцію stream_set_timeout(), т.к. параметр
timeout
функції fsockopen() обмежує лише час процесу встановлення з'єднання із сокетом.
Значення, що повертаються
fsockopen() повертає файловий покажчик, який можна використовувати з функціями, що працюють із файлами (такі як fgets() fgetss() fwrite() fclose() і feof()). Якщо дзвінок завершиться невдало, функція поверне false
Помилки
Викликає помилку рівня E_WARNING
, якщо hostname
не є допустимим доменом.
список змін
Версия | Опис |
---|---|
8.0.0 | timeout тепер допускає значення null. |
Приклади
Приклад #1 Приклад використання fsockopen()****
Loading...
Приклад #2 Використання UDP-з'єднання
Приклад нижче демонструє, як отримати день та час від UDP-служби "daytime" (порт 13) на машині.
Loading...
Примітки
Зауваження :
Залежно від оточення, домену Unix або часу очікування встановлення підключення може бути недоступним.
Увага
Іноді UDP-сокети набувають статусу відкритих, навіть якщо віддалений хост недоступний. Помилка проявить себе тільки під час читання або запису даних з цього сокету. Причина цього полягає в тому, що протокол UDP передає дані без встановлення з'єднання, а це означає, що операційна система не встановлює та не тримає з'єднання із сокетом, доки не почнеться передача даних.
Зауваження: Якщо вказати числову адресу IPv6 (наприклад,
fe80::1
) Ви повинні укладати його в квадратні дужки. Наприклад,tcp://[fe80::1]:80
Дивіться також
- pfsockopen() - Відкриває постійне з'єднання з інтернет-сокетом або доменним сокетом Unix
- stream_socket_client() - Відкрити з'єднання з інтернет-сокетом або доменним сокетом Unix
- stream_set_blocking() - Встановити блокуючий/неблокуючий режим у потоці
- stream_set_timeout() - Встановити значення часу очікування потоку
- fgets() - Читає рядок із файлу
- fgetss() - Читає рядок з файлу та видаляє HTML-теги
- fwrite() - Бінарно-безпечний запис у файл
- fclose() - Закриває відкритий дескриптор файлу
- feof() - Перевіряє, чи кінець файлу досягнуто
- socket_connect() - Починає з'єднання із сокетом
- Модуль Curl