Php Laravel 5.8中的异步队列
我正在构建一个应用程序来生成目录。我需要加载的数据通常超过50mb,所以为了不破坏用户体验,我尝试使用Laravel中的队列 我有一个职业班:Php Laravel 5.8中的异步队列,php,laravel,queue,jobs,Php,Laravel,Queue,Jobs,我正在构建一个应用程序来生成目录。我需要加载的数据通常超过50mb,所以为了不破坏用户体验,我尝试使用Laravel中的队列 我有一个职业班: <?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\Should
<?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;
use Illuminate\Http\Request;
use PDF;
use App\Jobs\ProcessCatalog;
class ProcessCatalog implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $id;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($id)
{
$this->id=$id;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//code which generate catalogs
}
}
当队列同步时,一切正常,但当我将queue\u DRIVER=同步到queue\u DRIVER=数据库时
一切似乎都在工作,但目录从未生成
我需要运行队列异步吗?最好的方法是什么?要使用Laravel数据库队列驱动程序,必须首先迁移队列表:
php artisan queue:table
php artisan migrate
然后必须运行队列工作程序:
php artisan queue:work
是吗?是的,我当然安装了数据库表。。。当我使用artisan运行时效果很好,但当我尝试从controller运行时效果不好,我会迁移表,但我希望从controller运行队列,而不是从artisan运行队列。。。当我从artisan运行时,效果很好…@AleksPer然后使用“同步”驱动程序,但它完全无法使用队列。控制器只在有请求时运行,它是同步的。队列用于在没有请求时异步运行任务。要实现这一点,您需要在后台运行一个进程,并监视队列中的作业。由于用户体验,我不想阻止用户执行其他操作,因此我需要在后台使用队列生成目录。。。我在想,现在使用可能更好CRON@AleksPerCRON用于计划任务。我认为排队最适合你想做的事情。我知道运行和监视队列工作人员可能会很烦人,但在我看来这是最好的方法。祝你一切顺利。谢谢你,我找到了
php artisan queue:work