2017-06-03 92 views
1

我有兩個laravel調度程序表達式調用,如下所示:一個自定義cron表達式,每3小時運行一次,每小時運行一次。Laravel調度程序自定義Cron表達式不工作

每次,每小時調度程序運行,但不是自定義的cron程序。它曾經工作,但停止工作。如果我直接從任何函數調用Poster1 :: post(),它可以工作。

可以向我解釋爲什麼這是行不通的,什麼時候更早?

第一調度:

$schedule->call(function() { 
     try { 
      Poster1::post();     
     } catch (Exception $e) { 

     } 
    })->cron('0 */3 * * *'); 

第二調度:

$schedule->call(function() { 
     try { 
      Poster2::post();     
     } catch (Exception $e) { 

     } 
    })->hourly(); 
+0

很難說沒有看到其餘的代碼。你可能要做的是實際調試(當前爲空)catch塊。另外,在'try'之前進行調試可以告訴你是否觸發了該作業。 – lesssugar

+0

通過在運行時添加日誌來驗證是否首先執行了cron作業。也可以在catch塊中添加一個來查看是否有任何異常被拋出。 – Sandeesh

回答

1

您可以使用Laravel調度功能運行每3小時。

$schedule->call(function() { 
    try { 
     Poster1::post();     
    } catch (Exception $e) { 

    } 
}) 
->hourly() 
->when(function() { 
    return intval(date('H')) % 3 === 0; 
}); 
+0

感謝您的提示,我要試試這個並回報:) – Hirvesh

+0

很高興我能幫上忙。考慮將此答案標記爲解決方案,以便其他用戶也可以找到。 :) – Jerodev

+0

工程太棒了!謝謝! – Hirvesh