Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使PHP fsockopen忽略错误_Php_Fsockopen - Fatal编程技术网

无法使PHP fsockopen忽略错误

无法使PHP fsockopen忽略错误,php,fsockopen,Php,Fsockopen,我正在用etsy的开源软件建立PHP脚本的报告。 我是基于他们给出的示例建立连接的,但我遇到了一个问题,fsockopen似乎忽略了try/catch,并且正在打印它的错误 当statsd服务器启动并运行时,一切都能正常工作-但如果它关闭或php脚本无法连接到它: Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known 我甚至尝试在fsockopen前面添加@,

我正在用etsy的开源软件建立PHP脚本的报告。 我是基于他们给出的示例建立连接的,但我遇到了一个问题,
fsockopen
似乎忽略了
try/catch
,并且正在打印它的错误

当statsd服务器启动并运行时,一切都能正常工作-但如果它关闭或php脚本无法连接到它:

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: 
Name or service not known
我甚至尝试在fsockopen前面添加
@
,但没有骰子。它似乎也完全忽略了超时设置,因为返回错误大约需要20秒:

        try {
            $host = 'stats.thisserverisdown.com';
            $port = '8125';
            if ( $fp = @fsockopen("udp://$host", $port, $errno, $errstr, 1) ) {
                if (!(get_resource_type($fp) == 'stream')) { return false; }
                stream_set_timeout($fp,1);
                stream_set_blocking($fp,false);
                foreach ($sampledData as $stat => $value) {
                    @fwrite($fp, "$stat:$value");
                }
                @fclose($fp);
            }
            return true;
        } catch (Exception $e) {
            return false;
        }

fsockopen
没有抛出错误。因为
fsockopen
必须解析您提供的主机名,所以它调用
getaddinfo()
,但失败了

尝试提供IP地址,或:

fsockopen( @"udp://$host", ...