/** * Execute the job * * @param Log $log * @return void */ public function handle(Log $log) { $log->debug("Handling check job for queue '{$this->queueName}', queued at {$this->startTime}"); $status = QueueStatus::get($this->queueName); if (!$status) { $message = "Queue status was not found in cache, yet queued job ran; is the cache correctly configured?"; $log->error($message); $status = new QueueStatus($this->queueName, QueueStatus::ERROR, false); $status->setMessage($message); $status->setEndTime(); $status->save(); } elseif (!$status->isPending()) { $log->warning("Non-pending status for check for queue '{$this->queueName}' found in the cache; ignoring: " . $status); } elseif (!$status->getStartTime() || $status->getStartTime()->ne($this->startTime)) { $log->warning("Pending status for check for queue '{$this->queueName}' found in the cache with mismatching time (expected {$this->startTime}, found {$status->getStartTime()}); ignoring: " . $status); } else { $log->debug("Successful queue check for queue '{$this->queueName}'"); $status->setStatus(QueueStatus::OK); $status->setEndTime(); $status->save(); } }
/** * Cache the fact that a queue check has been queued, and queue the check * * @return void */ public function queueCheck() { $status = new QueueStatus($this->queueName, QueueStatus::PENDING); $status->save(); Queue::pushOn($this->queueName, new Job($this->queueName, $this->startTime)); }