我需要你的帮助。
我正在使用Laravel队列和Linux监管工具(与文档完全一样(
现在我有一个非常奇怪的问题。
当我使用此命令时没有延迟
$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data));
它运行良好。
但是当我使用延迟选项时
$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data))->delay(60);
作业失败,无法继续
我可以在我失败的工作表上看到这份工作。
现在。。。当我不使用主管工具,只是在我的终端中运行命令时:
php artisan queue:listen
带有延迟选项的命令和其他队列任务工作正常。
这是我的larave工人的内容看起来像:
[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,
],
分派作业
$job = (new SendAutoresponderEmail($poptin,$autoresponder,$data))->delay(60);
$this->dispatch($job);
所以。。。最终,我通过在不同的连接和队列中创建一个新的主管工作人员来解决这个问题,如下所示:
[program:autoresponder-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/<Project>/artisan queue:listen autoresponder --sleep=5 -
-tries=3
autostart=true
autorestart=true
user=ubuntu
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/<Project>/worker.log