[PHP]HTTPステータスコードを取得する
Read More
PHPでHTTPステータスコードを取得する方法。
サーバにページリクエストを送るとヘッダー情報としてHTTPステータスコードを返してくる。
代表的なHTTPステータスコードは以下のようなものがある。
■ステータスコードとその意味
昔にブックマークしたページなんかを久しぶりに開くと404ページが表示されたりすることがある。
これ、内部的には404ページを表示するより先にブラウザが404ってステータスコードを受け取ってて
この値をGoogle先生なんかは利用してたりする(たぶん)。
なので正しいヘッダー情報を返していないとGoogleに404ページがサムネイル登録されたりする。
上記以外にも色んなステータスコードがあるので気になる方はご自分で。
--
さて本題。
PHP関数は以下のようになる。
■HTTPステータスコードを取得する関数
■実行結果
HTTPステータスコードとはあくまでもサーバに問い合わせた結果として返される値なので、
問い合わせ先のサーバが無いとステータスコードが取得できない。
ゆえにこの場合の戻り値はnullを返すようにしている。
--
この関数は色々な所で活用できる。
よそ様へのリンク先ページの存在確認や、自分のサーバの死活管理など。
まあ頻繁にやるとDoS攻撃になりかねないのでそこんとこの注意は必要。
サーバにページリクエストを送るとヘッダー情報としてHTTPステータスコードを返してくる。
代表的なHTTPステータスコードは以下のようなものがある。
■ステータスコードとその意味
・200:OK 成功。正常にコンテンツの読み込みを完了。 再現方法:普通にコンテンツを読む。 ・403:Client Error Forbidden サーバが「読み出し禁止」にしているコンテンツをブラウザが読もうとした。 再現方法:FTPで READパーミッションを外したコンテンツを読みこむ。 又は、フォルダの一覧を出さない設定にしておいてindex.htm や default.htmのない状態でスラッシュエンドのURLを叩く。 ・404:Client Error Not Found 指定されたURLは存在しない。 再現方法:存在しないURLを呼び出すと再現。ただしドメインは正しくないといけない。 ・503:Server Error Service Unavailable 過負荷などでリクエストが実行できない。 再現方法:負荷をかけて出るかどうかを調べる、わけにはいかない。
昔にブックマークしたページなんかを久しぶりに開くと404ページが表示されたりすることがある。
これ、内部的には404ページを表示するより先にブラウザが404ってステータスコードを受け取ってて
この値をGoogle先生なんかは利用してたりする(たぶん)。
なので正しいヘッダー情報を返していないとGoogleに404ページがサムネイル登録されたりする。
上記以外にも色んなステータスコードがあるので気になる方はご自分で。
--
さて本題。
PHP関数は以下のようになる。
■HTTPステータスコードを取得する関数
<?php /** * HTTPステータスコードを取得する * * 正常な場合は200が返却され、異常な場合はそのステータスが、 * そして存在しないURLの場合は返ってくる値はnullとなる。 * * @param string $url * @return mixed $header status code or null */ function getStatusCode($url) { $header = null; $options = array( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_ENCODING => "", CURLOPT_USERAGENT => "spider", CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, ); $ch = curl_init($url); curl_setopt_array($ch, $options); $content = curl_exec($ch); if(!curl_errno($ch)) { $header = curl_getinfo($ch); }// end if curl_close($ch); return $header['http_code']; }// end function echo(getStatusCode('http://xirasaya.com')); ?>
■実行結果
> 200
HTTPステータスコードとはあくまでもサーバに問い合わせた結果として返される値なので、
問い合わせ先のサーバが無いとステータスコードが取得できない。
ゆえにこの場合の戻り値はnullを返すようにしている。
--
この関数は色々な所で活用できる。
よそ様へのリンク先ページの存在確認や、自分のサーバの死活管理など。
まあ頻繁にやるとDoS攻撃になりかねないのでそこんとこの注意は必要。
Category "PHP" の最新記事
- [解決済]Windows10環境でAmazonS3にアップしたファイルをunlinkするとPermission deniedのエラーが発生する (0)
- [PHP] 文字列の前後の全角スペースを取り除くには (0)
- JSON内で扱えるデータ型の種類 (0)
- [PHP]FuelPHPでRequestクラスのレスポンス内容がおかしくなる (0)
- [PHP]null値ならデフォルト値を返すifnull()の使い方 (0)
- [PHP]効率よくFTP上のファイルの存在を確認する方法 (0)
- [PHP]効率よくFTP上のファイル情報を取得する方法 (0)
- シェルで文字に色を付ける方法と色の種類 (0)
- [PHP]フォルダパスの末尾のスラッシュを削除する (0)
- [PHP]ZipArchiveクラスを使ってzipファイルを作成する (0)