- ベストアンサー
HTTPステータスコード
phpでhttpリクエストを作成し、当該URLのステータスのチェックを行うプログラムを作成しました。 試作したプログラムの該当部分はこのようなものですが、 $response = $req->sendRequest(); if (!PEAR::isError($response)) { $ret = $req->getResponseCode } 同一サーバー内で、該当htmlが存在しないときは、サーバーは404を返すなど、$ret にしかるべきHTTPステータスコードを返してくれます。 ところが私の知識不足で不明なことがあります。 それは、そもそも該当URLのサーバー自体(ドメイン等)が存在しない時は、何がどういうコードを返してくれるのか、ということです。 先ほどの $ret には何も入ってきません。 このあたりご教授いただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
基本的にHTTPのステータスはアクセスしたWebサーバが返すものです。従ってドメインが無い、応答しないなのどのエラーはクライアント側で出すエラーコードになります。 http://www5.plala.or.jp/vaio0630/mail/st_code.htm コードも無く応答内容が無い場合は、サーバが応答しませんなどクライアント側で処理が必要です。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
質問の意図がわかりかねるのですが・・ 単純に存在するURLからレスポンスを取る場合は、そのサーバーが吐く エラーコードを得ればいいわけで、 逆に存在しないURLであればレスポンスはないのだから、探しに行った PHPのスクリプトが動くサーバーが音をあげてエラーになるだけです。
補足
回答ありがとうございます。 > 逆に存在しないURLであればレスポンスはないのだから、探しに行った > PHPのスクリプトが動くサーバーが音をあげてエラーになるだけです。 このあたりのロジックを詳しく知りたいと思っていたのです。 PHPのスクリプトが動くサーバーがエラーを吐くのか、それを実行している Webブラウザがエラーを吐くのか、またそれらに一定の規則があるのか・・など。 どうやら、PHPのスクリプトが動いているサーバーの仕様によって、いろいろと 異なるようですね。 いわゆる、HTTPステータスコード一覧表に掲載されていないレスポンスが 返ったときは、そのURL(ドメイン)が存在しないと判断することにします。
- osamuy
- ベストアンサー率42% (1231/2878)
http://pear.php.net/package/HTTP_Request/docs/latest/__filesource/fsource_HTTP_Request__HTTP_Request-1.4.4Request.php.html#a737 をみると、connectできないときは、PEAR::isError($response)が真になるので、$responseからエラー情報を取得できそうな。
補足
回答ありがとうございます。 getResponseCode の他に、 getResponseHeader getResponseBody を取得してみましたが、いずれもnullでした。。
補足
回答ありがとうございます。 サーバーではなく、クライント側でですエラーコードとのことですが、 クライアントというのは、ブラウザのことでしょうか? 先ほどのプログラムは、IEを使ってプログラムを実行していますが、 IEが何らかのエラーを返すのでしょうか? ちなみに、$ret に返ったのは nullでした。 また、サーバーが応答しないこのような場合、$ret がnullということを 判断基準としてよろしいのでしょうか? お手数ですが、このあたりも教えていただきたく思います。 よろしくお願いします。