【发布时间】:2013-12-12 16:17:54
【问题描述】:
我制作了 ping 网站的 php 脚本,如果我有答案,我什么也不做,否则我发送电子邮件警报。 这是我的代码:
function urlExists($url=NULL)
{
if($url == NULL) return false;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpcode>=200 && $httpcode<300){
return true;
} else {
return false;
}
}
$url = 'http://www.website.com/';
if(urlExists($url) == true)
{
exit('Website OK'."\n");
} else {
$headers ='From: "Sembot"<noreply@website.com>'."\n";
$headers .='Reply-To: noreply@website.com'."\n";
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
foreach ($destinataire as $dest) {
echo 'Website DOWN'."\n";
if(mail($dest, 'Sembot - Website DOWN', 'Website DOWN', $headers)) { echo 'email...'; }
}
}
当我在浏览器或控制台上执行此文件时,消息是“网站正常”,因为网站现在正常。但是当我创建一个每 5 分钟执行一次我的脚本的 crontab 时,我每 5 分钟收到一封电子邮件,但网站并没有死......你知道为什么吗?
【问题讨论】:
-
cron 默认将 cron 作业的输出通过电子邮件发送给作业的所有者。如果您不想让“ok”消息被邮寄,那么不要在该代码路径中执行任何输出。
标签: php cron debian crontab ping