[英]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.