PHPでステータスコードを取得する方法
2024/01/18
サーバーの死活監視でUptimeRobotを使っていたけど、どうも正常に監視してくれないサイトがあった。UptimeRobot側ではサーバーダウン状態になっているけど、サイト側は正常に閲覧できるという状態。
原因が分からないので、それであれば簡易の死活管理ツールを作ろうと思った。で、ステータスコードを取得する方法をメモ。
ソースコード
$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('http://hogehoge.com'); //ここに調べたいサイトのURLを入れる curl_setopt_array($ch, $options); $content = curl_exec($ch); if(!curl_errno($ch)) { $header = curl_getinfo($ch); } curl_close($ch); $status = ($header['http_code'] == 200) ? true: false; //死活監視なので落ちてるかどうかだけ振り分ける
その他
最初はfile_get_contentsで対応しようとしたんだけど、キャッシュの問題なのかテストサーバーでapacheのon/offを切り替えてテストしても、ステータスコードが200のままだった。タイムスタンプとかをGETクエリとして付与しても変わらず。curlだといけた。
あとは障害発生時にアラートメール送信すればUptimeRobotみたく使えそう。
参考サイト
関連記事
PHPでyoutubeから更新分の情報を取得する(スクレイピング)
「○○のサイトから自動更新分を持ってきて 自サイトに反映させらへん?」と以前に聞 ...
PHPファイルを解析する時に役立つ関数
初めて見るファイルに対して読み解くのに 役立つ関数が3つあったのでメモ。 get ...
CodeIgniter3でファイルキャッシュする方法
CodeIgniterでファイルキャッシュが楽に導入できた。そこそこ使いそうなの ...
PHPでif文とswitch文
ずっとif文を使っていたけどswitch文の方が速いみたい。 あとずらずら~とi ...
MySQLで重複を除く
ユニークな値を取り出したいときに使う。 DISTINCT(ディスティンクト) S ...