【问题标题】:When is the timeout in fsockopen not available?fsockopen 中的超时何时不可用?
【发布时间】:2016-10-17 20:57:01
【问题描述】:

我正在从本地网络服务器(arch linux,php7)向远程网络服务器发出请求,该网络不可用,因为该网络无法访问。这里超时似乎被忽略(即fsockopen 需要大约 23 秒才能返回,而不是给定的 5 秒超时)。

$timeout = 5;
$start = time();
dbglog($start . ' timeout ' . $timeout); // 1466081215 timeout 5
$socket = fsockopen($server,$port,$errno, $errstr, $timeout);
$end = time();
dbglog($end . ' socket done in ' . ($end-$start) . ' seconds'); // 1466081238 socket done in 23 seconds

official doku for fsockopen 声明如下:

注意

根据环境,Unix 域或可选的连接超时可能不可用。

然而,这就是关于可选超时不可用的环境的全部内容。

在哪里可以找到此问题的最新文档?

【问题讨论】:

    标签: php timeout environment fsockopen


    【解决方案1】:

    这取决于套接字类型。对于本地 unix 套接字,超时没有多大意义,因为一切都发生在进程进程。中间没有未知网络。所以要么失败,要么成功。但所需时间取决于服务器负载。

    【讨论】:

    • 这是唯一的情况吗?我正在从本地网络服务器(arch linux,php7)向远程网络服务器发出请求,该远程服务器不可用,因为该网络无法访问。这里的超时似乎也被忽略了。 (也许我应该用该信息修改问题)
    • 并分享一些代码。包含您的问题的最小工作示例
    猜你喜欢
    • 2014-08-12
    • 2011-03-22
    • 2011-06-17
    • 2012-08-12
    • 1970-01-01
    • 2018-12-30
    • 2018-07-08
    • 2011-09-28
    • 2012-02-03
    相关资源
    最近更新 更多