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でCookie保存時にHttpOnly / Secure属性を設定する方法
あるシステムのセキュリティ対策としてCookie保存時にHttpOnly / S ...
-
-
PHPでお問い合わせ等のform構築時にCSRF対策を行う方法
他社が制作されたお問い合わせフォームを改修する案件があった。ソースコードを拝見し ...
-
-
Codeigniter4でエラーログ設定、出力及び確認方法
Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...
-
-
PHPでCSVファイルを出力する際に「①」や「㈱」等の環境依存文字が文字化けする対応方法
過去記事の方法を用いてPHPでCSVファイルを出力すると所々「?」という形に文字 ...
-
-
PHPで日付の比較
以前に「締切日を設けて、今日の日付と比較して分岐させる」というもので 日付の比較 ...