勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでステータスコードを取得する方法

   2024/01/18  PHP

サーバーの死活監視で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みたく使えそう。

 

参考サイト

http://xirasaya.com/?m=detail&hid=188

 - PHP

  関連記事

Codeigniter4で外部ファイル(CSS / JS)の読み込みと共通パーツ化する方法

Codeigniter4.4.4でCSS及びJavaScriptファイルを設置し ...

HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)

HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...

CodeIgniter3でログをファイルに出力する方法

Codeigniter3でエラーログの設定を行い特定のファイルに出力させ当該ログ ...

PHPで指定日から曜日を割り出す

曜日ってどうやって割り出すの? となったのでメモ。 ■リファレンス http:/ ...

PHPでエラーログ等のログファイルから指定した行数を表示させる方法

エラーログを最新分から指定行数表示させる プログラムがあって、どういった作りにな ...