2010年5月11日火曜日

phpで「send of xx bytes failed with errno=32 Brokenpipe in xxxx」というエラーが出る

どうも、俺@今日2度目の書込みです。
さっき出ました。
( ! ) Notice: fwrite() [function.fwrite]: send of 67 bytes failed with errno=32 Broken pipe in /usr/local/path/to/php/source/file.php on line 61
というエラー。

該当箇所のソースは
$written = fwrite($fp, $send_data);
です。

どうやら、phpでソケット通信をする際に
 1 $fp = fsockopen($host, $port);
2 if (is_resource($fp)) {
3 fwrite($fp, $send_data);
4 fclose($fp);
5 }
という事をよくやるかと思いますが、3行目の時点で接続先サーバから切断された場合、上記のようなエラーが出るようです。
この例で挙げたくらいのソースの実行速度で接続が切断されることは滅多にないと思います(というか防ぎようがない)が、一度接続したソケットポインタを使い回している場合などでは今回のエラーが発生する可能性がありますので、要注意(`・ω・´)



以上どぇぇぇぇぇぇす。

0 件のコメント: