fsockopen
Открывает соединение с сокетом интернет- или Unix-домена
&reftitle.description;
resourcefalsefsockopenstringhostnameintport-1interror_code&null;stringerror_message&null;floatnulltimeout&null;
Функция устанавливает соединение с сокетом ресурса
hostname.
PHP поддерживает целевые ресурсы в интернет- и Unix-доменах так, как
описывает «». Список транспортов, которые поддерживает PHP,
также возвращает функция stream_get_transports.
По умолчанию функция откроет сокет в блокирующем режиме. Сокет переключают
в неблокирующий режим функцией stream_set_blocking.
Функция stream_socket_client работает аналогично,
но даёт более богатый набор настроек соединения, который включает поддержку
неблокирующих соединений и возможность предоставить потоковый контекст.
&reftitle.parameters;
hostname
Разрешается добавлять к имени хоста hostname префиксы
ssl:// или tls://
и использовать при подключении к удалённому хосту клиентские
SSL- или TLS-соединения поверх стека протоколов TCP/IP,
если установили поддержку
библиотеки OpenSSL.
port
Номер порта. Номер порта разрешается не указывать или пропустить
за счёт значения -1 для протоколов, которые не используют порты, например
unix://.
error_code
Функция заполнит параметр номером ошибки системного уровня, которая возникла
при вызове функции connect(), если аргумент указали при вызове функции.
Значение 0, которое вернулось в параметр error_code,
и значение &false;, которое вернула функция, указывают, что ошибка возникла
до вызова функции connect(). В большей части случаев это
связано с ошибкой инициализации сокета.
error_message
Сообщение об ошибке в виде строки.
timeout
Время ожидания соединения в секундах.
Функция будет использовать настройку default_socket_timeout
из файла &php.ini;, если значение равно &null;.
Если требуется установить время ожидания для чтения или записи данных через сокет,
вызывают функцию stream_set_timeout, поскольку
параметр timeout функции fsockopen
ограничивает только время установки соединения с сокетом.
&reftitle.returnvalues;
Функция fsockopen возвращает файловый указатель, который
можно использовать с другими функциями, которые работают с файлами (например,
fgets, fgetss,
fwrite, fclose
и feof). Функция возвращает &false;, если вызов завершится ошибкой.
&reftitle.errors;
Функция выдаёт ошибку уровня E_WARNING, если
в параметр hostname передали недопустимый домен.
&reftitle.changelog;
&Version;&Description;8.0.0
Параметр timeout теперь принимает значение null.
&reftitle.examples;
Пример использования функции fsockopen
\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: www.example.com\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>
]]>
Пример установки UDP-соединения
Пример показывает, как получить день и время от UDP-службы
daytime (которая работает на порте номер 13) на текущей машине.
\n";
} else {
fwrite($fp, "\n");
echo fread($fp, 26);
fclose($fp);
}
?>
]]>
&reftitle.notes;
В зависимости от окружения, Unix-домен или время ожидания установки подключения
могут оказаться недоступными.
Иногда UDP-сокеты получают статус открытых, даже если удалённый хост
недоступен. Ошибка становится очевидной только при чтении или записи
данных в сокет или из него. Причина этого заключается в том, что протокол UDP передаёт
данные без установки соединения, а это означает, что операционная система
не устанавливает и не держит соединение с сокетом, пока не начнётся передача данных.
&ipv6.brackets;
&reftitle.seealso;
pfsockopenstream_socket_clientstream_set_blockingstream_set_timeoutfgetsfgetssfwritefclosefeofsocket_connectМодуль Curl