我正在尝试使用 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 请求不会启动它。
有什么想法吗?