簡體   English   中英

Laravel 5.5 Scheduler命令與cron

[英]Laravel 5.5 Scheduler commands with cron

在這個問題上的任何幫助將不勝感激。

我有15個基於時間的任務在特定時間運行。 重要的是,它們必須在這些時間運行,因為它們基於運行的第一個cron任務構建數據。 這是一個例子:

$schedule->command( 'task:build one' )->cron( '2/5 * * * *' );
$schedule->command( 'task:build two' )->cron( '3/15 * * * *' );
$schedule->command( 'task:build three' )->cron( '3 * * * *' );
$schedule->command( 'task:build four' )->cron( '4 */12 * * *' );
...

以task:two為例,問題如下:

task:two使用task:one生成的數據庫中的結果並將其存儲到另一個表中。 task:one使用的表僅由其他任務永遠讀取,並且永遠不會寫入。 所以:

任務:一個人跑了不到一分鍾。 任務:兩分鍾一分鍾后開始。

在極少數情況下(可能每周最多執行8次,似乎是隨機的)任務:兩個任務被延遲如此之久,以至於:一個任務設法再次運行(5分鍾后)並在其表中添加額外的一行,因此按時間任務:兩個獲取的數據超出了其所需。

到目前為止,根據我自己的研究:

  1. 沒有sql死鎖問題,因為每個任務僅寫入特定於自身的表,而我看不到任何mysql錯誤日志。

  2. 該數據庫約為。 5GIG,在便宜的$ 20 Digital Ocean服務器上運行。

  3. 從這15個任務中,似乎某些任務的執行效果比其他任務更多,而某些似乎從未實現。

我不是開發人員,我試圖確定這是否是Laravel問題,可能是由於我的實施不正確還是服務器問題。

我希望可以很好地描述問題,以尋求幫助,但如果沒有,請告訴我您需要什么額外信息。

您可以通過命令$schedule->command('emails:send')->withoutOverlapping(10);使用laravel功能,稱為任務重疊$schedule->command('emails:send')->withoutOverlapping(10); 要了解更多信息, 訪問以下鏈接https://laravel.com/docs/5.5/scheduling#preventing-task-overlaps

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM