PHP - 如何使php.net的示例代码不挂起?

时间:2010-07-14 06:16:05

标签: php sockets client

如果没有收到数据,Simple TCP/IP client示例将会挂起。

要查看我的意思,请复制客户端代码并运行它,但删除GET请求中的一个\ r \ n使其无效,所以它看起来像这样:

$in =  "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n";

服务器不会响应,这是正常的,但我希望能够暂停或者防止它挂起。

我尝试使用socket_set_option设置超时但我认为这仅适用于socket_connect。

任何人都有解决方案吗?

如果我将 socket_recv 与MSG_DONTWAIT标志一起使用,那么等待所有数据,连接关闭或超时的正确方法是什么?如果这些都没有发生?

1 个答案:

答案 0 :(得分:1)

您可以使用socket_select()来确定套接字是否有要读取的数据。