RSSフィードの送信がなくとも、HTMLに変更があったら自動でメールが届くコードを作りました。
ブログで古い情報を載せたままにするのが嫌なので、定期的に公式サイトの情報を確認できるようにするためです。
いちいちサイトを確認しないでも、ページの更新があった時だけ自動で通知されれば便利だと思います。
フォルダ構成は以下のような感じ。site-check.phpの処理が実行されると、sourceフォルダにテキストファイルが生成されます。

PHPコード
<?php
$check_site_array = array(
'hoge' => '監視したページのURL', // hoge.txtというテキストが自動で書き出される
'fuga' => '監視したページのURL' // fuga.txtというテキストが自動で書き出される
);
// 更新通知先メールアドレス
$mail_address = 'メールアドレス';
// 文字コードを設定
mb_language( 'ja' );
mb_internal_encoding( 'UTF-8' );
foreach( $check_site_array as $name => $url ) {
$source = @file_get_contents( $url );
if( !$source ) {
mb_send_mail($mail_address, "更新通知", "サイトURLが変更になった可能性があります。" );
continue;
}
$text_path = 'source/' .$name . '.txt';
if( !$current_text = @file_get_contents( $text_path ) ) {
//テキストファイルがなかったら作成
file_put_contents( $text_path, $source );
} elseif( $current_text !== $source ) {
// 前の文字列と異なる場合、メールを送信
mb_send_mail($mail_address, "更新通知", "$url が更新されました。" );
// 送信後テキストを上書き
file_put_contents( $text_path, $source );
} else {
// 変更がない場合、そのままスルー
}
}- <?php
- $check_site_array = array(
- 'hoge' => '監視したページのURL', // hoge.txtというテキストが自動で書き出される
- 'fuga' => '監視したページのURL' // fuga.txtというテキストが自動で書き出される
- );
- // 更新通知先メールアドレス
- $mail_address = 'メールアドレス';
- // 文字コードを設定
- mb_language( 'ja' );
- mb_internal_encoding( 'UTF-8' );
- foreach( $check_site_array as $name => $url ) {
- $source = @file_get_contents( $url );
- if( !$source ) {
- mb_send_mail($mail_address, "更新通知", "サイトURLが変更になった可能性があります。" );
- continue;
- }
- $text_path = 'source/' .$name . '.txt';
- if( !$current_text = @file_get_contents( $text_path ) ) {
- //テキストファイルがなかったら作成
- file_put_contents( $text_path, $source );
- } elseif( $current_text !== $source ) {
- // 前の文字列と異なる場合、メールを送信
- mb_send_mail($mail_address, "更新通知", "$url が更新されました。" );
- // 送信後テキストを上書き
- file_put_contents( $text_path, $source );
- } else {
- // 変更がない場合、そのままスルー
- }
- }
<?php
$check_site_array = array(
'hoge' => '監視したページのURL', // hoge.txtというテキストが自動で書き出される
'fuga' => '監視したページのURL' // fuga.txtというテキストが自動で書き出される
);
// 更新通知先メールアドレス
$mail_address = 'メールアドレス';
// 文字コードを設定
mb_language( 'ja' );
mb_internal_encoding( 'UTF-8' );
foreach( $check_site_array as $name => $url ) {
$source = @file_get_contents( $url );
if( !$source ) {
mb_send_mail($mail_address, "更新通知", "サイトURLが変更になった可能性があります。" );
continue;
}
$text_path = 'source/' .$name . '.txt';
if( !$current_text = @file_get_contents( $text_path ) ) {
//テキストファイルがなかったら作成
file_put_contents( $text_path, $source );
} elseif( $current_text !== $source ) {
// 前の文字列と異なる場合、メールを送信
mb_send_mail($mail_address, "更新通知", "$url が更新されました。" );
// 送信後テキストを上書き
file_put_contents( $text_path, $source );
} else {
// 変更がない場合、そのままスルー
}
}
$check_site_arrayと$mail_addressはご自身で書き換えて下さい。
ローカルで試そうとしましたが、XAMPPの設定が面倒でした…。
指定されたページのURLのHTMLソースをテキストで保存、次にプログラムが実行された時にHTMLの中身が異なればメールが来る仕組みです。
Cronの登録
Cronというのは、「一日一回」とか「週に一回」など指定の頻度でコマンドを実行してくれる仕組みです。
これを使って、定期的にsite-check.phpを実行してくれるように設定します。
エックスサーバーやmixhost、さくらインターネットなどの主要レンタルサーバーでは利用できます。
このサイトはさくらですが、メインで使っているのはmixhostなのでmixhostの管理画面で説明します。
共通設定の所で実行頻度を設定できます。

私は1週間に1回に設定しました。そんなガンガンメール来ても困りますし。
「コマンド」の所に、以下のコードを挿入します(IDの部分は書き換えて下さい。)
/usr/bin/php /home/mixhostのID/public_html/site-checker/site-check.php
- /usr/bin/php /home/mixhostのID/public_html/site-checker/site-check.php
/usr/bin/php /home/mixhostのID/public_html/site-checker/site-check.php
エックスサーバーは以下を参考にしてください。
https://www.xserver.ne.jp/manual/man_program_cron.php
これで公式サイトのチェックが楽になりました。
あんまりサイトを設定しすぎると、メールがいっぱい来てうざいかもしれません。