PHP - уведомление по электронной почте при каждом изменении удаленного файла - PullRequest
0 голосов
/ 29 февраля 2012

Мне было интересно, есть ли способ, чтобы скрипт php на моем веб-сервере отправлял мне электронное письмо при изменении файла с другого веб-сервера.

Например, этот файл часто меняется: http://media1.clubpenguin.com/play/en/web_service/game_configs/paper_items.json

Я веду блог об игре, и этот файл очень важен для создания сообщений об обновлениях перед моими конкурентами. Хотя я часто забываю проверить это.

Есть ли способ, чтобы скрипт сообщал мне по электронной почте всякий раз, когда этот файл обновляется, или проверял этот файл, чтобы узнать, обновился ли он, и по электронной почте, если он обновлялся?

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Используйте crontab для настройки скрипта проверки, который будет запускаться раз в минуту, и сравните этот файл с вашей локально сохраненной версией (или используйте вместо этого контрольные суммы 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 ;)
}
1 голос
/ 29 февраля 2012

Вам нужны эти два файла в одной папке.

  • old.json
  • scriptForCron.php

В 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('your@mail.com','Yoohoo', 'File changed');
 fputs($fp,$execute);
}
fclose($fp);

А затем добавить scriptForCron.php в задание cron.Вы можете обратиться за поддержкой к хостингу.

0 голосов
/ 29 февраля 2012

Этот код не проверяет наличие обновлений в реальном времени - это было бы практически невозможно - но каждые 1 час / минуту.

Во-первых, сохраните файл в вашей системе, который имеет такое же содержимое, как это. Назовите его любым способом, например paper_items.json.

Теперь создайте файл с именем checkitems.php. Прочитайте файл, который часто меняется, сравните, если его содержимое равно вашему paper_items.json. Если все равно, делать нечего, если нет, сохраните онлайн-файл в своем локальном файле paper_items.json и используйте PHP mail (), чтобы отправить вам что-то вроде «произошли изменения».

Наконец, настройте задачу cron, чтобы запускать ее каждые n (например, 1) час или 1 минуту и ​​т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...