gpt4 book ai didi

php - 使 PHP socket_connect 超时

转载 作者:可可西里 更新时间:2023-11-01 12:32:01 26 4
gpt4 key购买 nike

我创建了一个小应用程序来分析网络连接。它从浏览器运行并连接到本地 PHP/Apache 服务器。然后它要求 PHP 通过原始套接字发送 ping 数据包。问题是,如果我尝试 ping 的主机不存在或不响应 ping,我们将永远不会从服务器获得答复。

我相信套接字请求会一直存在,直到 apache 重新启动。我最近从我的应用程序中得到了不同的结果,我责怪 apache 使用了太多的套接字。目前我已经设置了 AJAX 调用的超时,我对此很满意。但我真的需要让 PHP 执行超时,这样我就不会为无法访问的主机打开 500,000 个套接字。

一些示例代码:

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

这是不会超时的函数。我需要让它超时。此外,PHP 脚本执行时间不会影响套接字。

我是无知的。

最佳答案

您可以使用以下 options 设置读取和发送超时:

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));

或者,您可以使用 non-blocking sockets并定期轮询套接字以查看远程主机是否响应。

关于php - 使 PHP socket_connect 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11881708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com