file_get_contents関数等でHTMLを取得するときや、APIを利用するためにリクエストを送信するときにリクエスト先のURLが存在しないものだった場合、エラーとなり正常な処理ができなくなります。エラーでプログラムが停止してしまうのは困りますのでエラーの時に処理を変更できるようにする方法を考えます。
下記のコードは、存在しないURLにリクエストを出しています。
[php]
[/php]
実行結果は下記のような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
このエラーメッセージを抑制するためにエラー制御演算子「@」を使用します。
[php]
[/php]
エラー制御演算子を使うことでエラーの表示は抑制されますが、エラーだった時のための処理を追加しなければなりません。リクエストを行った時のレスポンスのステータスに応じて処理を記述します。ステータスを取得するには定義済み変数の$http_response_headerを参照します。$http_response_headerは配列になっており、要素番号0の中にステータスコードが格納されています。その中のステータスコードを見て処理を分岐させます。
[php]
[/php]
エラー制御演算子と$http_response_headerを組み合わせることで、ステータスを確認するために送信するリクエストを1度に抑えることができます。
[…] <?php $html =… >>[PHP]リクエスト先のURLが存在しなかった場合の処理方法 « Codaholic Author: […]