如何判断套接字在PHP中是否打开?
我需要维护一些用PHP打开的套接字,并定期检查这些套接字。我不熟悉PHP中的套接字;我像这样打开插座:如何判断套接字在PHP中是否打开?,php,sockets,Php,Sockets,我需要维护一些用PHP打开的套接字,并定期检查这些套接字。我不熟悉PHP中的套接字;我像这样打开插座: $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_connect($socket, $ip, $port); 一些套接字可能会进入不返回消息的状态;这些套接字只接收消息如果套接字没有响应消息,如何判断套接字是否已打开? socket_sendto-向套接字发送消息,无论其是否已连接 似乎您可以使用并向远程主机发送一
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $ip, $port);
一些套接字可能会进入不返回消息的状态;这些套接字只接收消息如果套接字没有响应消息,如何判断套接字是否已打开?
socket_sendto-向套接字发送消息,无论其是否已连接
似乎您可以使用并向远程主机发送一些“ping”数据,然后测试返回值以确定套接字是否仍然建立。最好使用函数:fsockopen() 请阅读以下内容: 或者您可以尝试使用以下函数:socket\u create\u listen() 请阅读以下内容: (这只是一个实验。)
要定期检查,您可以使用一个简单的cron进行检查。您能找到它吗?从套接字读取的非阻塞尝试如何?它应该返回空白或false,这取决于它是否连接。我认为还会生成一个警告,但可以禁用。您应该区分“打开”的套接字,例如操作系统为这些描述符分配资源,以及“连接”到其他套接字的套接字(例如远程主机上的服务器套接字)。在这种情况下,我认为问题应该是关于“…如果插座连接被打开…”。