我正在向本地网络服务器(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
fsockopen的官方Doku表示以下内容:
注意:
根据环境,UNIX域或可选连接超时可能不可用。
但是,这仅有有关可选超时的环境的全部。
我可以在哪里找到此问题的当前文档?
它取决于套接字类型。对于本地Unix套接字,超时没有多大意义,因为一切都会发生过程< -kernel->过程。之间没有未知的网络。因此,要么失败或成功。但是时间取决于服务器的负载。