2012-02-29 24 views
0

私のWebサーバにPHPスクリプトを持たせる方法があるのか​​どうか疑問に思っていました。PHP - リモートファイルが変更されたときに電子メール通知

たとえば、頻繁に変更されるこのファイルがあります:http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json

は私がゲームについてのブログと、そのファイルは私の競争相手の前に更新に関する記事を作成するために非常に重要です。私はしばしばそれをチェックすることを忘れる。

スクリプトがそのファイルを更新するたびに私にメールを送ったり、ファイルが更新されているかどうかを確認したり、もしあれば私にメールしたりする方法はありますか?

答えて

1

など、このnごと(例えば、1)時間または1分を実行するcronジョブを設定します。

  • scriptForCron.php
  • old.json

scriptForCron.php書き込みで:その後、

$url='http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json'; 
$ch = curl_init($url); 
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 5); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
$execute = curl_exec($ch); 

$fp=fopen('old.json','w+'); 
$oldjson=fread($fp,filesize('old.json')); 

if($execute!=$oldjson){ 
mail('[email protected]','Yoohoo', 'File changed'); 
fputs($fp,$execute); 
} 
fclose($fp); 

、ジョブをcronにscriptForCron.phpを追加します。 ホスティングサポートに問い合わせることができます。

+0

よろしくお願いします。私はそれをテストするためのテストファイルを作るでしょう、今のところすべてが整っているようです。ありがとうございました。 – Nick

+0

ようこそ。 – Narek

3

crontabを使用して、1分に1回実行するチェックスクリプトを設定し、ローカルに保存されているバージョンと比較します(または、md5チェックサムを使用します)。

file_get_contents('http://url-to-file', 'checkfile.tmp'); 
if (md5(file_get_contents('lastfile.tmp')) != md5(file_get_contents('checkfile.tmp'))) 
{ 
    //copy checkfile to lastfile 
    unlink('lastfile.tmp'); 
    copy('checkfile.tmp', 'lastfile.tmp'); 
    //send email or do something you want ;) 
} 
0

このコードでは、リアルタイムでの更新はチェックされません。ほとんど不可能ですが、1時間/分ごとです。

まず、このファイルと同じ内容のファイルをシステムに保存します。それには何らかの名前をつけます(例:paper_items.json)。

checkitems.phpという名前のファイルを作成します。頻繁に変更されるファイルを読み、内容がpaper_items.jsonと等しいかどうかを比較します。同じであれば、何もする必要はありません。そうでない場合は、ローカルのpaper_items.jsonにオンラインファイルを保存し、PHPのmail()を使用して「変更がありました」などのメールを送信します。

は最後に、あなたが同じフォルダに、この2つのファイルを持っている必要

関連する問題