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みたく使えそう。
参考サイト
関連記事
-
-
Codeigniter4でエラーログ設定、出力及び確認方法
Codeigniter4.4.4でエラーログの設定を行い特定のファイルに出力させ ...
-
-
PHPにて指定した画像に対して、繰り返し透かし画像処理する方法
画像素材等のサイトで無料版の画像に対して「sample」等の透かし画像処理を行っ ...
-
-
PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)
PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...
-
-
PHPでパスワード付きのZIP / PDFファイルを作成する方法
PHPでZIPファイル化する方法やPDFファイル出力する方法を過去に書いたが、何 ...
-
-
PHPでdatetime型のデータを年月日時分秒に分割する方法
datetime型を年月日時分秒でそれぞれに分割させたい時に今まではいちいちex ...