我正在嘗試在 Laravel 5.7 中實作基本佇列。
我已經運行了創建作業和 failed_jobs 表的遷移。
我已將 .env 更新為 QUEUE_CONNECTION=database 和 QUEUE_DRIVER=database
我用工匠創建了一個基本的作業
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class NewJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
sleep(5);
}
}
我在 Controller 中呼叫 NewJob。
NewJob::dispatch();
我已經運行了以下工匠命令
php artisan config:cache
php artisan cache:clear
php artisan queue:flush
我不是在尋找要執行的佇列,因為作業沒有寫入資料庫。
Larravel.log 中沒有錯誤,/var/log/* 中也沒有任何我可以跟蹤的已修改檔案。
我不知道去哪里尋找或改變什么。我已經通過重做遷移和在另一個控制器中呼叫的新作業來重做這個實作,但我仍然沒有將任何資料寫入資料庫。
我在 Debian 服務器上使用 Mariadb(InnoDB)。
看起來資料庫連接為空
#job: Illuminate\Queue\Jobs\SyncJob {#5458 ▼
#job: null
#payload: "{"displayName":"App\\Jobs\\NewJob","job":"Illuminate\\Queue\\CallQueuedHandler@call","maxTries":null,"timeout":null,"timeoutAt":null,"data":{"commandName":"App\ ?"
#instance: Illuminate\Queue\CallQueuedHandler {#5470 ?}
#container: Illuminate\Foundation\Application {#2 ?}
#deleted: false
#released: false
#failed: false
#connectionName: "sync"
#queue: null
}
connection: null
queue: null
chainConnection: null
chainQueue: null
delay: null
chained: []
uj5u.com熱心網友回復:
出于某種原因,.env 檔案中的 queue_driver 不受支持,并且當您通過指定它寫入資料庫的連接來呼叫調度方法時。
NewJob::dispatch()->onConnection('database');
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/481162.html