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(整行)或倒勾(``)标记代码/脚本。希望有人能跟我跟进,告诉我如何避开这个网站上的回帖:)