etsy のオープン ソースstatsd ライブラリを使用して、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;
}