2014-10-26 95 views
4

我一直在嘗試做隨機cron作業,我選擇年份日期和小時但分鐘是隨機的。創建特定日期和小時的隨機分鐘cron作業

我第一次嘗試運行的cron每分鐘,然後用今天的日期比較隨機日期:

我在格式2014-10-26 17 rand(0,59)插入隨機日期到數據庫中列fake_time。在我每分鐘運行cron的php頁面中:

if($row["fake_time"] == date("Y-m-d H i")){ 
    //do stuff 
} 

而且這個工作很完美。但後來我發現我無法每分鐘運行一次cron,因爲我的hostor(hostgator)不允許我!你有什麼想法可以以其他方式做到這一點嗎?


或者我應該把它設置在https://www.easycron.com/而不是?

+1

這是給你很好的樣本,檢查:http://stackoverflow.com/questions/9049460/cron-jobs-and-random-times-在給定時間內 – 2014-10-26 21:11:00

+0

你的主機允許你做什麼_does_?我認爲@ M.Abooali評論中的解決方案應該工作得很好。 – andy 2014-11-10 19:02:02

+0

更大的問題是 - 你爲什麼要這樣做?例如,WordPress已經有一個插件來檢查網站的可用性,例如。 – Leptonator 2014-11-10 19:16:49

回答

1

,我認爲你是被由cron作業的數量,你可以在一天內運行,IIRC限制hostgator對基本計劃有每日限制。要解決此限制,IMO,你有兩個選擇:

  1. 轉到sleep 60秒

    基本上,在規定的時間每天運行cron作業,如果檢查你的病情,它不是True,然後進入睡眠60秒。

    if($row["fake_time"] == date("Y-m-d H i")){ 
        //do stuff 
    } else { 
        sleep(60); 
    } 
    

    這樣,你有一個單一的cron工作,雖然它運行了很長一段時間。如果您只能每天運行cron作業,並且想要隨機運行一小時或一分鐘,則可以更改邏輯並在每小時睡眠時進入3600秒,然後每分鐘睡眠60秒。

    您可能需要相應地設置set_time_limit

  2. 設置easycron

    如果您的cron作業會突然終止,因爲時間限制無法設置,您需要使用easycron服務命中。

    在這種情況下,將上面的腳本代碼放在一個php文件中,比如說script.php,並安排一個cronjob用這個腳本的get請求命中。你在這種情況下,命令將類似於

    wget your.domain.com/script.php 
    
0

如果沒有技術問題,你可以用你的php腳本來完成(不需要安裝)。

if(rand(1, 5) == 1){ 
// do your staff 
} 

如果你認爲該腳本將不被執行往往不夠,你可以減少差異rand(1,3)

相關問題