我正在尝试查看Laravel Queue,但是遇到了一些问题。
所以我添加了一个testJob
protected function schedule(Schedule $schedule)
{
$schedule->job(new TestJob)->everyMinute();
}
工作类什么都不做,只是一个测试
class TestJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct()
{
//
}
public function handle()
{
//
}
}
正如文档所述,将cron添加到服务器中
* * * * * cd /home/ec2-user/myproject-prod && php artisan schedule:run >> /dev/null 2>&1
最后一次增加主管工作人员
[program:myproject-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /home/ec2-user/myproject-prod/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=ec2-user
numprocs=1
redirect_stderr=true
stdout_logfile=/home/ec2-user/supervisor-myproject-prod.log
因此,如下面的日志所示,您可以在同一秒内看到同一作业多次运行。
有时同一作业运行一次(正确),很多时候运行两次,几次运行4次。
[2019-11-14 08:25:02][5537] Processing: App\Jobs\TestJob
[2019-11-14 08:25:02][5537] Processed: App\Jobs\TestJob
[2019-11-14 08:25:05][5538] Processing: App\Jobs\TestJob
[2019-11-14 08:25:05][5538] Processed: App\Jobs\TestJob
[2019-11-14 08:26:03][5539] Processing: App\Jobs\TestJob
[2019-11-14 08:26:03][5539] Processed: App\Jobs\TestJob
[2019-11-14 08:26:06][5540] Processing: App\Jobs\TestJob
[2019-11-14 08:26:06][5540] Processed: App\Jobs\TestJob
[2019-11-14 08:27:03][5541] Processing: App\Jobs\TestJob
[2019-11-14 08:27:03][5541] Processed: App\Jobs\TestJob
[2019-11-14 08:27:06][5542] Processing: App\Jobs\TestJob
[2019-11-14 08:27:06][5542] Processed: App\Jobs\TestJob
是在主管中运行8个进程之前,所以我更改为1并遇到相同的问题。
我在MySQL作业队列中看到的停止工作的工人看起来很正确,每分钟增加一个作业。
这看起来像是工人冲突。
对吗?我在做错什么吗?
Laravel任务计划程序准备好用于成千上万的工作了吗?
答案 0 :(得分:2)
尝试..
php artisan queue:work --tries=1