如何处理php artisan队列:侦听
我在Laravel队列系统中面临严重问题,请帮助我解决此问题 一旦我使用如何处理php artisan队列:侦听,php,laravel,laravel-queue,laravel-jobs,Php,Laravel,Laravel Queue,Laravel Jobs,我在Laravel队列系统中面临严重问题,请帮助我解决此问题 一旦我使用 $mailer = Mail::to($email_to)->queue(new ContactGeneral($data)); 它存储到数据库中,并从terminalphp artisan queue:listen运行此命令。一旦我关闭终端,它就不会侦听我的队列 为此,我在kernem.php中设置了一个调度文件,类似于每分钟运行的文件 protected function schedule(Schedule
$mailer = Mail::to($email_to)->queue(new ContactGeneral($data));
它存储到数据库中,并从terminalphp 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
问题是,由于每分钟运行每分钟运行它不会杀死前一个进程,并在下一分钟运行另一个进程,因此会减慢我的服务器
请让我知道什么是最好的方式来实现这一点
提前感谢最好的方法是使用。但是,如果在共享宿主环境中运行应用程序,则可以使用以下命令处理队列一次,然后退出该过程,从而释放内存:
php artisan queue:work --once
* * * * * cd /path-to-your-project && php artisan queue:work --once
根据您将拥有的队列数量,将队列设置为每1、2或3分钟运行一次,以确保前一个进程有时间使用队列,并且它们不会经常干扰。我认为您可以使用以下命令:
php artisan queue:work --once
* * * * * cd /path-to-your-project && php artisan queue:work --once
最好的方法是使用。但是,如果在共享宿主环境中运行应用程序,则可以使用以下命令处理队列一次,然后退出该过程,从而释放内存:
php artisan queue:work --once
* * * * * cd /path-to-your-project && php artisan queue:work --once
根据您将拥有的队列数量,将队列设置为每1、2或3分钟运行一次,以确保前一个进程有时间使用队列,并且它们不会经常干扰。我认为您可以使用以下命令:
php artisan queue:work --once
* * * * * cd /path-to-your-project && php artisan queue:work --once
不,您不需要安排此过程 只要队列:工作进程正在运行他就会查看您的“作业”表并逐个任务运行
您需要的是确保当您关闭控制台时进程不会结束,正如user8555937和Webinion所说,您需要supervisor及其配置文件,一旦您运行它,它将在后台运行,您可以忘记它不,您不需要安排此进程 只要队列:工作进程正在运行他就会查看您的“作业”表并逐个任务运行
您需要的是确保当您关闭控制台时进程不会结束,正如user8555937和Webinion所说,您需要管理器及其配置文件,一旦您运行它,它将在后台运行,您可以忘记它队列工作器必须在后台持续运行。Laravel建议使用
supervisor
来执行此操作,在不使用队列中有一个示例:作为调度程序侦听。而是按照文件要求安装监督员这回答了你的问题吗?队列工作程序必须在后台持续运行。Laravel建议使用supervisor
来执行此操作,在不使用队列中有一个示例:作为调度程序侦听。而是按照文件要求安装监督员这回答了你的问题吗?