2011年06月06日に投稿

[PHP]リクエスト先のURLが存在しなかった場合の処理方法

file_get_contents関数等でHTMLを取得するときや、APIを利用するためにリクエストを送信するときにリクエスト先のURLが存在しないものだった場合、エラーとなり正常な処理ができなくなります。エラーでプログラムが停止してしまうのは困りますのでエラーの時に処理を変更できるようにする方法を考えます。


下記のコードは、存在しないURLにリクエストを出しています。

実行結果は下記のようなWarningが表示されることになります。

Warning: file_get_contents(http://t-szk.com/hoge.html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/vhosts/t-szk.com/httpdocs/lab/header/index.php on line 2

このエラーメッセージを抑制するためにエラー制御演算子「@」を使用します。

エラー制御演算子を使うことでエラーの表示は抑制されますが、エラーだった時のための処理を追加しなければなりません。リクエストを行った時のレスポンスのステータスに応じて処理を記述します。ステータスを取得するには定義済み変数の$http_response_headerを参照します。$http_response_headerは配列になっており、要素番号0の中にステータスコードが格納されています。その中のステータスコードを見て処理を分岐させます。

エラー制御演算子と$http_response_headerを組み合わせることで、ステータスを確認するために送信するリクエストを1度に抑えることができます。

関連記事

One Response to “[PHP]リクエスト先のURLが存在しなかった場合の処理方法”

  1. […] <?php $html =… >>[PHP]リクエスト先のURLが存在しなかった場合の処理方法 « Codaholic Author: […]

Leave a Reply