$host = "実際に存在するホスト";
$port = 80;
$path = "実際に存在するパス";
$timeout = 1;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
error_log("errno = ".$errno);
error_log("errstr = ".$errstr);
return '';
}
このときに、たまに、
errno = 110
errstr = Connection timed out
という、エラーが返ってきてしまいます。
これの原因をはなぜ起きるかわかますでしょうか?
自分としては、fsockopenしている先が、1秒以内に
ソケット通信が出来ずに、$fpの戻りが空になったので
エラーが発生していると思うのですが・・
あってますかね?
これを改善するには、接続先のサーバ側の処理を早めるのか
他の通信方法でデータを取得するしか、方法は無いでしょうか?
例えば、file_get_contentsとか・・
わかる方が、いましたら、お力を貸して下さい。
よろしくお願いします。
あ、ちなみに、fsockopenの前に@を付与する
とかいう改善は、改善じゃないので、回答はいりません。
>タイムアウトする場合は、接続先の
>サーバには、アクセスログとか残らないのでしょうか?
相手のサーバまで届いていればエラーログが残るかもしれませんが、プロキシやロードバランサがタイムアウトを出している場合もあるので何とも言えません。
やっぱり、そうですか・・
一個だけ気になっているのですが、タイムアウトする場合は、接続先の
サーバには、アクセスログとか残らないのでしょうか?