【PHP&Cron】自動でページの更新・変更をメールで受け取る

この記事をシェアする

スポンサードリンク

RSSフィードの送信がなくとも、HTMLに変更があったら自動でメールが届くコードを作りました。

ブログで古い情報を載せたままにするのが嫌なので、定期的に公式サイトの情報を確認できるようにするためです。

いちいちサイトを確認しないでも、ページの更新があった時だけ自動で通知されれば便利だと思います。

フォルダ構成は以下のような感じ。site-check.phpの処理が実行されると、sourceフォルダにテキストファイルが生成されます。

PHPコード

  1. <?php
  2. $check_site_array = array(
  3. 'hoge' => '監視したページのURL', // hoge.txtというテキストが自動で書き出される
  4. 'fuga' => '監視したページのURL' // fuga.txtというテキストが自動で書き出される
  5. );
  6. // 更新通知先メールアドレス
  7. $mail_address = 'メールアドレス';
  8. // 文字コードを設定
  9. mb_language( 'ja' );
  10. mb_internal_encoding( 'UTF-8' );
  11. foreach( $check_site_array as $name => $url ) {
  12. $source = @file_get_contents( $url );
  13. if( !$source ) {
  14. mb_send_mail($mail_address, "更新通知", "サイトURLが変更になった可能性があります。" );
  15. continue;
  16. }
  17. $text_path = 'source/' .$name . '.txt';
  18. if( !$current_text = @file_get_contents( $text_path ) ) {
  19. //テキストファイルがなかったら作成
  20. file_put_contents( $text_path, $source );
  21. } elseif( $current_text !== $source ) {
  22. // 前の文字列と異なる場合、メールを送信
  23. mb_send_mail($mail_address, "更新通知", "$url が更新されました。" );
  24. // 送信後テキストを上書き
  25. file_put_contents( $text_path, $source );
  26. } else {
  27. // 変更がない場合、そのままスルー
  28. }
  29. }
<?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の部分は書き換えて下さい。)

  1. /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

これで公式サイトのチェックが楽になりました。

あんまりサイトを設定しすぎると、メールがいっぱい来てうざいかもしれません。

スポンサードリンク

WordPressで複数の検索フォームを設置する際の注意点>

この記事をシェアする