我正在设置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";
?>
答案 0 :(得分:0)
解决;
我最终运行了一些测试,发现脚本运行正常,运行和调用文件的位置没有问题。
问题出在cron中使用的mail()函数中,我已经转移到PHPMailer以在脚本中发送邮件并登录到SMTP以发送邮件。每次按时工作。
感谢您的帮助,