2013-12-12 25 views
-1

我做了一个PHP脚本平网站,如果我有一个答案,我什么都不做,否则我发送电子邮件警报。 这是我的代码:Crontab谁在Debian服务器上使用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"<[email protected]>'."\n"; 
    $headers .='Reply-To: [email protected]'."\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...'; } 
    } 

} 

当我在浏览器或与控制台执行这个文件,该消息是“网站OK”,因为网站是现在确定。但是,当我创建一个每5分钟执行一次脚本的crontab时,我每5分钟收到一封电子邮件,但该网站并未死亡...您知道为什么吗?

+1

默认情况下cron将cron作业的输出发送给作业的所有者。如果你不想让邮件发送“OK”消息,那么不要在该代码路径中执行任何输出。 –

回答

-1

我看到你有一个> =旁边的200上这个,因为你有小于300和伟大或等于200

而不是每次都将是正确的:

if($httpcode>=200 && $httpcode<300){ 
    return true; 
} else { 
    return false; 
} 

试试这个:

if($httpcode > 200 && $httpcode < 300){ 
    return true; 
} else { 
    return false; 
} 

我只是简单地删除相等。

+0

-1 Huh? 200是常规成功代码。 – tripleee

+0

从我了解他寻找范围不? –

+0

但200是成功的,> 200只会发生在非常边缘的情况。适当的范围是200-299,而不是201-299。换句话说,这个问题与这段代码无关,并且这个改变会引入一个新的错误。 – tripleee

相关问题