Laravel队列作业在后台不工作

Laravel队列作业在后台不工作,laravel,Laravel,嘿!我有一个应用程序,我必须在某些操作(如用户创建等)时发送一些电子邮件。问题是它们不是在后台运行,而是我必须等到进程完成,然后它会将我重定向到另一个页面。 我使用数据库驱动程序和队列,Laravel 5.2。 用户创建后,我的电子邮件代码、exp代码: $this->dispatch(new WelcomeEmail($user)); Artisan::call('queue:work'); 其中,WelcomeEmail是推送到队列上的作业。这种类型的代码被放置在我想要发送电子邮件的

嘿!我有一个应用程序,我必须在某些操作(如用户创建等)时发送一些电子邮件。问题是它们不是在后台运行,而是我必须等到进程完成,然后它会将我重定向到另一个页面。 我使用
数据库
驱动程序和
队列
Laravel 5.2
。 用户创建后,我的电子邮件代码、exp代码:

$this->dispatch(new WelcomeEmail($user));
Artisan::call('queue:work');

其中,
WelcomeEmail
是推送到队列上的作业。这种类型的代码被放置在我想要发送电子邮件的所有地方。怎么了?

首先,您不想在调度程序中对“队列”命令使用
Artisan::call

您应该打开终端并执行:
php-artisan-queue:listen--timeout=0--trytes=1
,您应该听其自然。
然后您可以访问页面,其中将调用$this->dispatch或更好的dispatch方法。该页面上的代码应为:
发送(新邮件($user))

在生产服务器上,应该使用supervisord监视
php artisan队列:listen
命令,以确保它一直处于启动和运行状态


进一步阅读请访问:

我有一个类似的问题,但因为是一个作业,我不希望守护进程总是运行,还有更新代码问题,。。。。所以我解决了直接从PHP运行命令的问题,比如:

exec('nohup php/my_folder/artisan queue:work--once>/dev/null 2>&1&');
这将启动一个作业,然后关闭,而不等待结果。但是要注意Laravel日志文件权限,如果您在Linux下运行,o.s.用户可能会根据上下文和配置进行更改


希望这能帮助到别人。

我不知道为什么更改
.env
不足以解决问题,但在从

'default'=>env('QUEUE\u CONNECTION','sync'),

'default'=>env('QUEUE\u CONNECTION','database'),
config/queue.php文件中的

一切正常。

好的,但如果我不想使用管理器怎么办?我可以把它们放到cron中吗?我决定和主管一起工作,这很有效!非常感谢!好的,您不需要使用supervisord,您可以使用daemon选项,但它有一些代码含义。老实说,使用supervisord是一个很好的选择,它会帮你省去一些麻烦。更多信息可在我提供的链接。没问题,这是我的荣幸。您可以用ctrl-k(整行)或倒勾(``)标记代码/脚本。希望有人能跟我跟进,告诉我如何避开这个网站上的回帖:)