Laravel 資料庫佇列倒序執行

lyxxxh發表於2019-04-11

要實現的結果

laravel資料庫佇列倒序執行
laravel是101810 101811 101812 ....101819這樣執行的
如果我們想要他101819 101817 101816 101815 這樣倒序執行

看下原始碼

檔案路徑:
namespace Illuminate\Queue;
Class DatabaseQueue

protected function getNextAvailableJob($queue)\
{
  $job = $this->database->table($this->table)\
 ->lockForUpdate()\ ->where('queue', $this->getQueue($queue))\
 ->where(function ($query) {
  $this->isAvailable($query);
  $this->isReservedButExpired($query);
 }) ->orderBy('id', 'asc')
 ->first();
}
這是laravel獲取下一個佇列的方法
我們可以直接把asc改成desc

效果圖

laravel資料庫佇列倒序執行

laravel資料庫佇列倒序執行

我遇到的

因為採集小說10w本  每本都是一個佇列(採集章節  平均300章)
1本(300章)要30秒     
24小時採集10w*300 /30/ 86400都要11天了  (我估計要15天)
所以本地從佇列從1 2 3 4 5 6開始執行
伺服器就從10w 10w-1 10w-2  倒序執行
最後合併章節
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章