【问题标题】:Laravel 5.8 background job is not in the backgroundLaravel 5.8 后台作业不在后台
【发布时间】:2019-06-30 18:21:49
【问题描述】:

我有一个库,可以导入大量图像,我正在尝试使用 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

汽车工作:

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,
    ],

],
  • 我在env 文件中没有REDIS_QUEUE

【问题讨论】:

    标签: laravel laravel-5 queue


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,有进步了,现在我得到了,undefined index queue RedisConnector 中的警告,connectt
    • 您确定.envconfig/queue.php 中的设置正确吗?也许将两个文件的全部内容添加到您的问题中(不是密码/秘密或.envAPP_KEY!)。
    • 您不应该更改sync 连接的driver!您应该将queue.default 选项从sync 更改为redis(或者您也可以在.env 文件中使用QUEUE_CONNECTION=redis)。那里的配置有点混乱,但您不需要更改连接,只需更改选定的连接。
    • 每当您更新代码时,都需要重新启动队列工作程序。使用日志记录查看队列中发生的情况。
    • 好吧,如果没有更多信息,很难为您提供帮助。但由于这似乎是一个完全不同的话题,我建议您打开一个新问题,尽可能多地提供细节。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    相关资源
    最近更新 更多