service = $service; } /** * Execute the job. * * @return void */ public function handle() { /** @var \App\Models\ServiceStat */ $serviceStat = ServiceStat::firstOrNew([ 'date' => date('Y-m-d'), 'service_id' => $this->service->id, ]); if (!$serviceStat->exists) { $serviceStat->service()->associate($this->service); } $serviceStat->nb_calls += 1; $serviceStat->saveOrFail(); } /** * Determine the time at which the job should timeout. * * @return \DateTime */ public function retryUntil() { return now()->addMinutes(rand(0, 360)); } /** * Get the middleware the job should pass through. * * @return array */ public function middleware() { return [ (new WithoutOverlapping(self::KEY)) ->releaseAfter(rand(90, 180)) ]; } }