0
我正在用etsy的開放源代碼statsd library設置我的PHP腳本報告。 我基於他們給出的示例建立了連接,但是我遇到了一個問題,它似乎fsockopen
忽略了try/catch
並正在打印其錯誤。當statsd服務器啓動並運行無法讓PHP fsockopen忽略錯誤
一切正常,盛大 - 但如果它下來或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;
}