2013-12-12 27 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

相關問題