我需要维护一些用 PHP 打开的套接字并定期检查这些套接字。我是 PHP 中套接字的新手;我像这样打开套接字:
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $ip, $port);
一些套接字可能会进入不返回消息的状态;这些套接字只接收消息。如果套接字没有响应消息,我如何判断套接字是否打开?
socket_sendto — 向套接字发送消息,无论它是否已连接
似乎您可以使用socket_sendto并向远程主机发送一些“ping”数据,然后测试返回值以确定套接字是否仍然建立。
最好使用函数:fsockopen()
阅读:http ://www.php.net/manual/en/function.fsockopen.php
或者您可以尝试使用该功能:socket_create_listen()
阅读:http ://www.php.net/manual/en/function.socket-create-listen.php
(这只是实验性的。)
并定期检查,您可以使用简单的 cron 进行检查。