使PHP socket_connect超时(Make PHP socket_connect time

2019-06-26 21:34发布

我有我创建分析网络连接的小型应用程序。 它从一个浏览器中运行,并连接到本地PHP / Apache服务器。 然后它要求PHP通过原始套接字发送ping包。 问题是,如果我尝试ping主机是不是活着还是不会回答坪,我们从来没有从服务器得到一个答案。

我beleave插座要求住到Apache的重新启动。 我已经从我的应用程序最近获得不同的结果,我使用了太多的套接字指责阿帕奇。 目前,我已经设置了AJAX调用的超时时间,我很高兴。 但我真的需要让PHP做timeouting,这样我就不会得为50个万名插座开到无法访问的主机。

一些示例代码:

$sockconn = @socket_connect($socket, $target, null);
if(!$sockconn)
{
    $raw['error'] = socket_strerror(socket_last_error());
    $raw['status'] = false;
    return $raw;
}

这是一个不会超时的功能。 我需要得到它超时。 另外PHP脚本的执行时间不影响插座。

我无言以对。

Answer 1:

您可以设置阅读和使用下列发送超时选项 :

socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => 1, 'usec' => 0));
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array('sec' => 1, 'usec' => 0));

另外,您也可以使用非阻塞套接字 ,并定期轮询插座,看看远程主机回应。



Answer 2:

尝试设置default_socket_timeout 。



文章来源: Make PHP socket_connect timeout