人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5.2.6を使用して、以下のようなプログラムを作成。

$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の前に@を付与する
とかいう改善は、改善じゃないので、回答はいりません。




●質問者: hopefully
●カテゴリ:就職・転職 学習・教育
✍キーワード:FP Out エラー サーバ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1967
●35ポイント

合っています。

対策としては、$timeoutの値を増やすこと。

◎質問者からの返答

やっぱり、そうですか・・

一個だけ気になっているのですが、タイムアウトする場合は、接続先の

サーバには、アクセスログとか残らないのでしょうか?


2 ● km1967
●35ポイント

>タイムアウトする場合は、接続先の

>サーバには、アクセスログとか残らないのでしょうか?

相手のサーバまで届いていればエラーログが残るかもしれませんが、プロキシやロードバランサがタイムアウトを出している場合もあるので何とも言えません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ