如何处理phpartisanqueue:listen
How to process php artisan queue:listen
我在 Laravel 队列系统中遇到了一个严重的问题,请帮助我解决这个问题。
一旦我使用
对邮件进行排队
$mailer = Mail::to($email_to)->queue(new ContactGeneral($data));
它存储到数据库中,运行从终端 php artisan queue:listen 执行此命令一次就可以正常工作我关闭我的终端,它不听我的队列。
为此,我在 kernem.php 文件中设置了一个计划,就像每分钟 运行
protected function schedule(Schedule $schedule){
$schedule->command('queue:listen')->everyMinute();
}
在 cronjob 中设置此行并正常工作
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
问题是每分钟 运行 秒 运行 每分钟它不会终止前一个进程,运行 下一分钟另一个进程会减慢我的服务器速度
请告诉我实现这个的最佳方法是什么
提前致谢
最好的方法是使用 supervisor。尽管如果您 运行 在共享主机环境中运行应用程序,您可以处理一次队列然后退出进程,从而使用以下命令释放内存:
php artisan queue:work --once
根据您拥有的队列数量,将队列设置为 运行 每 1、2 或 3 分钟一次,以确保之前的进程有时间使用队列并且它们不会干扰经常。我想你可以使用以下命令:
* * * * * cd /path-to-your-project && php artisan queue:work --once
不,您不需要安排此过程
只要queue:work进程是运行宁他就会看你的"jobs"table和运行 逐个任务
你需要的是确保进程在你关闭控制台时不会结束,因为 user8555937 和 Webinion 说你需要 supervisor 及其配置文件,一旦你 运行 它会 运行在后台,你可以忘记它
我在 Laravel 队列系统中遇到了一个严重的问题,请帮助我解决这个问题。
一旦我使用
对邮件进行排队$mailer = Mail::to($email_to)->queue(new ContactGeneral($data));
它存储到数据库中,运行从终端 php artisan queue:listen 执行此命令一次就可以正常工作我关闭我的终端,它不听我的队列。
为此,我在 kernem.php 文件中设置了一个计划,就像每分钟 运行
protected function schedule(Schedule $schedule){
$schedule->command('queue:listen')->everyMinute();
}
在 cronjob 中设置此行并正常工作
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
问题是每分钟 运行 秒 运行 每分钟它不会终止前一个进程,运行 下一分钟另一个进程会减慢我的服务器速度
请告诉我实现这个的最佳方法是什么
提前致谢
最好的方法是使用 supervisor。尽管如果您 运行 在共享主机环境中运行应用程序,您可以处理一次队列然后退出进程,从而使用以下命令释放内存:
php artisan queue:work --once
根据您拥有的队列数量,将队列设置为 运行 每 1、2 或 3 分钟一次,以确保之前的进程有时间使用队列并且它们不会干扰经常。我想你可以使用以下命令:
* * * * * cd /path-to-your-project && php artisan queue:work --once
不,您不需要安排此过程
只要queue:work进程是运行宁他就会看你的"jobs"table和运行 逐个任务
你需要的是确保进程在你关闭控制台时不会结束,因为 user8555937 和 Webinion 说你需要 supervisor 及其配置文件,一旦你 运行 它会 运行在后台,你可以忘记它