dポイントプレゼントキャンペーン実施中!

phpでhttpリクエストを作成し、当該URLのステータスのチェックを行うプログラムを作成しました。

試作したプログラムの該当部分はこのようなものですが、

$response = $req->sendRequest();
if (!PEAR::isError($response)) {
$ret = $req->getResponseCode
}

同一サーバー内で、該当htmlが存在しないときは、サーバーは404を返すなど、$ret にしかるべきHTTPステータスコードを返してくれます。

ところが私の知識不足で不明なことがあります。
それは、そもそも該当URLのサーバー自体(ドメイン等)が存在しない時は、何がどういうコードを返してくれるのか、ということです。
先ほどの $ret には何も入ってきません。

このあたりご教授いただければ幸いです。
よろしくお願いいたします。

A 回答 (3件)

基本的にHTTPのステータスはアクセスしたWebサーバが返すものです。

従ってドメインが無い、応答しないなのどのエラーはクライアント側で出すエラーコードになります。
http://www5.plala.or.jp/vaio0630/mail/st_code.htm
コードも無く応答内容が無い場合は、サーバが応答しませんなどクライアント側で処理が必要です。

この回答への補足

回答ありがとうございます。

サーバーではなく、クライント側でですエラーコードとのことですが、
クライアントというのは、ブラウザのことでしょうか?

先ほどのプログラムは、IEを使ってプログラムを実行していますが、
IEが何らかのエラーを返すのでしょうか?

ちなみに、$ret に返ったのは nullでした。

また、サーバーが応答しないこのような場合、$ret がnullということを
判断基準としてよろしいのでしょうか?

お手数ですが、このあたりも教えていただきたく思います。
よろしくお願いします。

補足日時:2010/01/11 23:43
    • good
    • 0

質問の意図がわかりかねるのですが・・



単純に存在するURLからレスポンスを取る場合は、そのサーバーが吐く
エラーコードを得ればいいわけで、
逆に存在しないURLであればレスポンスはないのだから、探しに行った
PHPのスクリプトが動くサーバーが音をあげてエラーになるだけです。

この回答への補足

回答ありがとうございます。

> 逆に存在しないURLであればレスポンスはないのだから、探しに行った
> PHPのスクリプトが動くサーバーが音をあげてエラーになるだけです。

このあたりのロジックを詳しく知りたいと思っていたのです。
PHPのスクリプトが動くサーバーがエラーを吐くのか、それを実行している
Webブラウザがエラーを吐くのか、またそれらに一定の規則があるのか・・など。

どうやら、PHPのスクリプトが動いているサーバーの仕様によって、いろいろと
異なるようですね。
いわゆる、HTTPステータスコード一覧表に掲載されていないレスポンスが
返ったときは、そのURL(ドメイン)が存在しないと判断することにします。

補足日時:2010/01/12 19:09
    • good
    • 0

http://pear.php.net/package/HTTP_Request/docs/la …
をみると、connectできないときは、PEAR::isError($response)が真になるので、$responseからエラー情報を取得できそうな。

この回答への補足

回答ありがとうございます。

getResponseCode
の他に、

getResponseHeader
getResponseBody

を取得してみましたが、いずれもnullでした。。

補足日時:2010/01/12 00:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!