簡體   English   中英

Laravel 5.7作業隊列未運行異步

[英]Laravel 5.7 jobs queue not running async

我正在嘗試使用Laravel 5.7 作業隊列在數據庫中進行一些插入/更新,並且可能出錯了,因為調用該作業時似乎阻塞了我的應用程序,因此,它不是異步運行。 我的代碼具有以下結構:

.env

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

queue.php

'default' => env('QUEUE_CONNECTION', 'sync'),

'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'retry_after' => 90,
    ],

job_caller.php

method_name(){ 
  InsereProspeccao::dispatch($path, $evento, $equipe)->onQueue('jobs');
  retur some_msg_to_user;
}

job_name.php

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

class InsereProspeccao implements ShouldQueue{

use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

  private $path = '';
  private $evento = '';
  private $equipe = '';


 public function __construct($path, $evento, $equipe){
     $this->path = $path;
     $this->evento = $evento;
     $this->equipe = $equipe;        
 }

   public function handle(){
      //all program logic
      //access DB for insert/update
   }

}

Obs .:我正在閱讀文檔,但是我無法找到會發生什么的錯誤!

您正在使用QUEUE_CONNECTION=sync ,它基本上具有同步行為。

請按照以下步驟操作:

  • 運行php artisan queue:table ,它將自動創建jobs表的遷移

  • 運行php artisan migrate migration,它將通過運行遷移創建表

  • 更改QUEUE_CONNECTION=database ,並按照默認情況下,它會自動采取jobs表來管理隊列。

  • 運行php artisan config:clear清除應用程序配置緩存

那應該很好。 查看文檔以獲取更多幫助。

試試這個: QUEUE_CONNECTION=database ,應該很好。

您還可以設置rabbitmq或其他驅動程序,因為它們的實現要先進得多,並且可以進行更多生產。 但是數據庫是一個好的開始。

暫無
暫無

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

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