Laravel 5.8后台作业不在后台

时间:2019-06-30 18:21:49

标签: laravel laravel-5 queue

我有一个图书馆,它会导入很多图像,并且我正在尝试使用Laravel后台作业。对于排队的工作,我正在关注Laravel文档。

第一个(创建表):

php artisan queue:table
php artisan migrate

然后在.env文件中为Redis配置:

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=43216

创建工作:

php artisan make:job CarsJob

CarsJob:

public function handle() 
{
    $cars = new CarsLibrary();
    $CarsLibrary->importAll();
}

通过控制器中的某些操作分派作业:

首先,我尝试过:

$importCarsJob = (new ImportCarsJob())->onQueue('import_cars');
$this->dispatch($importCarsJob );

我尝试过的第二件事:

$importCarsJob = new importCarsJob();
$this->dispatch($importCarsJob);

我已在托管中启用Redis。它是共享托管。

如果我访问URL,则会看到此作业不在后台,因为它需要一分钟以上的时间才能完成请求。

编辑: env文件在上方,这是config/queue.php

    'connections' => [

    'sync' => [
        'driver' => 'redis',
    ],
    ... other drivers like beanstalkd

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


    'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => env('REDIS_QUEUE', 'default'),
        'retry_after' => 90,
        'block_for' => null,
    ],

],
  • REDIS_QUEUE文件中没有env

1 个答案:

答案 0 :(得分:2)

似乎您没有将config/queue.php中的队列连接从sync更新为redis(或环境变量QUEUE_CONNECTION)。 sync驱动程序将立即执行作业,而无需将其推送到队列中。

顺便说一句,如果使用redis队列驱动程序,则不需要队列数据库表。