如何处理php-artisan队列:listen



我在Laravel队列系统中遇到严重问题,请帮助我解决此问题。

一旦我使用排队我的邮件

$mailer = Mail::to($email_to)->queue(new ContactGeneral($data));  

它存储到数据库中,并从终端运行此命令php-artisan队列: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

不,您不需要安排这个过程

只要队列:工作流程正在运行他就会查看您的"作业"表并逐个任务运行

你需要的是确保这个过程不会在你关闭控制台时结束,正如user8555937和Webinion所说,你需要supervisor及其配置文件,一旦你运行它,它就会在后台运行,你可以忘记它

最新更新