勉強したことのメモ

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でOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法

PHPでOGPタグ(metaタグ)を取得する際、file_get_content ...

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...

PHPにて短縮URLを展開させて、元のURLを取得する方法

短縮されたURLを展開させて、元のURLを取得したいというケースがあった。方法を ...

PHPからLINEのMessaging APIにリクエストし通知を送る方法

LINEから「2025/3/31にLINE Notifyのサービスが終了する」と ...

PHPのintval

intvalという見たこと無い関数があったのでメモ。 ■リファレンス http: ...