Php laravel 5.4队列:工作——一次,但最多20个工作
我正在尝试使用laravel时间表处理激活电子邮件队列 我知道我应该用主管来管理工人执事Php laravel 5.4队列:工作——一次,但最多20个工作,php,laravel,cron,queue,schedule,Php,Laravel,Cron,Queue,Schedule,我正在尝试使用laravel时间表处理激活电子邮件队列 我知道我应该用主管来管理工人执事 但我无法在服务器上安装它, 我只需要使用时间表(每分钟使用cronjob) 我使用“crontab-e”为计划添加了cronjob,它每分钟都在运行 * * * * * /usr/local/bin/php-5.6 [project dir]/artisan schedule:run > '/dev/null' 2>&1 在app/console/kernal.php中添加的sc
- 但我无法在服务器上安装它, 我只需要使用时间表(每分钟使用cronjob)
我使用“crontab-e”为计划添加了cronjob,它每分钟都在运行
* * * * * /usr/local/bin/php-5.6 [project dir]/artisan schedule:run > '/dev/null' 2>&1
在app/console/kernal.php中添加的schedule函数中
$schedule->command('queue:work --queue=activation-email --timeout=30 --once')->withoutOverlapping()->everyMinute();
它正在工作,但不好,因为它每分钟只能处理一封邮件,我希望它每分钟运行一次,每分钟至少处理20-30封邮件
用户不能等待超过1分钟的激活电子邮件,如果多个用户在同一时间段注册,用户将等待太长时间!女巫很坏 因此,一旦需要运行,每分钟最多做10个工作并死亡 如何在不运行后台进程的情况下执行队列 一直都是背景 我在网上搜索了几个小时,却找不到解决方案
谢谢你 谢谢你的帮助 编辑: 我试着这样做:
for ($x = 1; $x <= 10; $x++) {
$schedule->command('queue:work --queue=activation-email --timeout=30 --once')->withoutOverlapping();
}
for($x=1;$x命令('queue:work--queue=activation email--timeout=30--one')->不重叠();
}
但这感觉太不对了…每天开10个执事,而不是一个做10个工作…但我工作得很好(而且很快),但我猜这会消耗CPU。有更好的解决方案吗?谢谢…maby一种方法,让它运行5分钟,优雅地停止它,然后每5分钟重新启动一次吗?有人吗?