勉強したことのメモ

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

  関連記事

PHPで他サーバにFTP経由にてファイルをアップロードする方法

formで送信した内容をチェックした上で、他サーバにファイルをアップロードしたか ...

メモリキャッシュシステムであるMemcachedをPHPにて利用する方法

メモリキャッシュシステムであるMemcachedのインストール方法、IP制限、P ...

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...

AlmaLinux8&PHP8系の環境にComposerをインストールする方法

AlmaLinux8&PHP8系の環境にComposerをインストールし ...

PHPで引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について

他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...