首页 > 解决方案 > Laravel 5.2 队列 - 延迟不起作用

问题描述

我需要你的帮助。

我正在使用 Laravel 队列和 Linux 主管工具(完全喜欢它的文档)

现在我有一个非常奇怪的问题。

当我毫不拖延地使用这个命令时

$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data));

它工作正常。

但是当我使用延迟选项时

$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data))->delay(60);

作业失败,不再继续

我可以在失败的工作表上看到该工作。

现在......当我不使用主管工具并在我的终端中运行命令时:

php artisan queue:listen

带有延迟选项的命令和其他队列任务工作正常。

这是我的 larave-worker 内容的样子:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/Poptin/artisan queue:work database --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=ubuntu
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/html/<project>/worker.log

你认为我需要做什么来修复它?

另外......我怎样才能为不同的工作使用不同的队列?像那样

$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data))->onQueue('autoresponder')->delay(60);

?

目前,我只有默认队列。我在 config/queue.php 文件中声明其他队列的位置?

'connections' => [

    'sync' => [
        'driver' => 'sync',
    ],

    'database' => [
        'driver' => 'database',
        'table' => 'jobs',
        'queue' => 'default',
        'expire' => 60,
    ],

标签: phplinuxlaravellaravel-5queue

解决方案


派遣你的工作

$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data))->delay(60); $this->dispatch($job);


推荐阅读