Cron作业检查页面是否有特定的更改,如果是,则发送mail()

时间:2015-05-10 19:09:23

标签: php email cron

我正在设置CRON以检测页面上的更改。我遇到的问题是更多地指向服务器端,但我希望其他人看一下代码,看看是否有任何明显的问题会阻碍CRON正常运行。 CRON运行脚本并在某些时候单独工作,结果要么100%正确,要么电子邮件被延迟,并且消息中的$ nws_timestamp错误的时间戳。

当通过浏览器运行脚本时,每次都能正常工作。

剧本的总结; 读取保存在其上的远程数据的文本文件,并比较两者,拉动和修剪更新的日期和时间。如果不同,它会向几封电子邮件发送一封电子邮件,其中包含更新的日期和时间。

脚本的目的: 允许在国家气象局在风暴事件期间更新天气简报时通知人员列表。 (就像我们现在的热带风暴一样)

    <?
$source = file_get_contents('http://www.erh.noaa.gov/mhx/downloads/briefings/index.php');
$textfile = 'nws_brief.txt';

list($junk,$nws_timestamp) = explode("Updated: </td><td align=\"left\">",$source);

$nws_timestamp = substr("$nws_timestamp", 0, 26);                       //location of text on page
$nws_timestamp = str_replace("</td>", "", "$nws_timestamp");
$nws_timestamp = str_replace("</tr>", "", "$nws_timestamp");
$nws_timestamp = str_replace("<", "", "$nws_timestamp");
$nws_timestamp = str_replace("/", "", "$nws_timestamp");
$nws_timestamp = str_replace("/t", "", "$nws_timestamp");
$nws_timestamp = str_replace("td", "", "$nws_timestamp");
$nws_timestamp = str_replace("d>", "", "$nws_timestamp");
$nws_timestamp = str_replace(">", "", "$nws_timestamp");

$textfile_data = file_get_contents($textfile);

//READ FROM FILE
if ($textfile_data == $nws_timestamp){
        exit;
    }else{
        //Continue
    }

//SAVE TO FILE
$current = file_get_contents($textfile);
$current = "$nws_timestamp";
file_put_contents($textfile, $current);

//EMAIL NOTIFICATION

//BCC List:
$bcc_list = array(
  "user2@domain.com",
  "user3@domain.com",
  "user4@domain.com",
  "user5@domain.com",


);
$bcc = implode(',', $bcc_list);                          


putenv('TZ=America/New_York');                          
$date_time = date('m-d-Y g:i:s A');                     

$to = "user1@domain.com";                           
$headers = "From: OBXAirWaves <admin@obxairwaves.com>\r\n"; 
$headers .= "Organization: OBXAirWaves.com\r\n"; 
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "BCC: $bcc\r\n";

$subject = "NWS Briefing Update - $nws_timestamp";                      
$msg = "NWS Update  - $date_time<br>
<a href=\"http://www.erh.noaa.gov/mhx/downloads/briefings/index.php  \">Download Latest Briefing</a><br>
<br>
Briefing Update:<br>
<table border='1'>
  <tr>
    <td>New: $nws_timestamp</td>
  </tr>
  <tr>
    <td>Last: $textfile_data</td>
  </tr>
</table>


";

mail($to, $subject, $msg, $headers);

echo "Date & Time: $date_time<br>To: $to<br>BCC: $bcc<br>Subject: $subject<br><br>Message: <br>$msg";

?>

1 个答案:

答案 0 :(得分:0)

解决;

我最终运行了一些测试,发现脚本运行正常,运行和调用文件的位置没有问题。

问题出在cron中使用的mail()函数中,我已经转移到PHPMailer以在脚本中发送邮件并登录到SMTP以发送邮件。每次按时工作。

感谢您的帮助,