stream_set_timeout() 是否有可能不起作用?我的功能(下面的代码)只要服务器需要回复。如果服务器需要 30 秒才能回复,该函数会耐心等待。我希望它在几秒钟后超时,函数应该返回 null 并且网站不应该加载超过 30 秒,而是告诉存在连接问题。我正在使用 PHP 5.4。
function request($json){
$reply = null;
$fp = @fsockopen("localhost", 1234, $errno, $errstr, 2);
if(!$fp){
return null;
}
fputs($fp, $json."\r");
stream_set_timeout($fp, 2);
// stream_set_blocking($fp, true); <-- I've read in a related SO question that this might help. It doesn't.
for($i=0; !feof($fp); $i++){
$reply = fgets($fp);
}
fclose($fp);
return $reply;
}