Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.8中的异步队列_Php_Laravel_Queue_Jobs - Fatal编程技术网

Php Laravel 5.8中的异步队列

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

我正在构建一个应用程序来生成目录。我需要加载的数据通常超过50mb,所以为了不破坏用户体验,我尝试使用Laravel中的队列

我有一个职业班:

<?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