Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel Larvel队列作业多次运行同一作业_Laravel - Fatal编程技术网

Laravel Larvel队列作业多次运行同一作业

Laravel Larvel队列作业多次运行同一作业,laravel,Laravel,我试图看到Laravel队列工作,但遇到了一些问题 所以我添加了一个测试作业 protected function schedule(Schedule $schedule) { $schedule->job(new TestJob)->everyMinute(); } 职业课什么都不做,只是一个测试 class TestJob implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueab

我试图看到Laravel队列工作,但遇到了一些问题

所以我添加了一个测试作业

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()
    {
        //
    }
}
正如docs所说,将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
因此,正如下面的loge所示,在同一秒中,您可以看到同一个作业多次运行

有时同一个作业运行一次(正确),很多时候运行两次,少数时候运行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
是在supervisor中运行8个进程之前,所以我改为1并遇到了相同的问题

停止我在MySQL作业队列中看到的worker看起来是正确的,每分钟添加一个作业

所以这看起来像是工人之间的冲突

对吗?我做错什么了吗

Laravel task scheduler准备好生产数千个作业了吗?

试试看

php artisan queue:work --tries=1

似乎没有任何失败的作业,因此这不会改变行为。运行4分钟,到目前为止是正确的。我将保持它运行,并检查作业执行时是否正确填写了
available\u at
字段?@Jerodev是的,每个作业在
字段有一分钟的
available\u