我正在尝试使用 fsockopen 与游戏服务器进行通信,该服务器会响应一些基本统计信息。它在服务器在线时完美运行,但如果服务器离线,以下代码会导致 php 停止显示读取数据的页面。
try {
$socket = fsockopen($host, $port, $errno, $errstr, 10);
if ($socket !== false) {
fwrite($socket, "\xFE");
$data = "";
$data = fread($socket, 1024);
fclose($socket);
if ($data !== false && substr($data, 0, 1) == "\xFF") {
// get into
} else {
// Server did not send back proper data, or reading from socket failed.
print "Server not available.";
}
} else {
// ...
}
} catch(Exception $e){
// ...
}
我已经尝试过 try/catch,我已经尝试向异常添加自定义处理程序。我唯一的想法是在 Web 请求之外运行它并存储响应,以便 Web 请求不会启动它。
有什么想法吗?