如何判断套接字是否在 PHP 中打开


How to tell if socket is open in PHP?

我需要维护一些我用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 进行检查。