public static function tearDownAfterClass() { foreach (self::$pheanstalk->listTubes() as $tube) { do { $potentiallyHasMore = false; $tubeStats = self::$pheanstalk->statsTube($tube); if ($tubeStats['current-jobs-ready'] != 0) { $jobId = self::$pheanstalk->peekReady($tube); self::$pheanstalk->delete($jobId); $potentiallyHasMore = true; } if ($tubeStats['current-jobs-delayed'] != 0) { $jobId = self::$pheanstalk->peekDelayed($tube); self::$pheanstalk->delete($jobId); $potentiallyHasMore = true; } if ($tubeStats['current-jobs-buried'] != 0) { $jobId = self::$pheanstalk->peekBuried($tube); self::$pheanstalk->delete($jobId); $potentiallyHasMore = true; } } while ($potentiallyHasMore); } // Cleanup unclean state try { $job = self::$pheanstalk->peek(self::$testJobId); self::$pheanstalk->delete($job); } catch (\Exception $e) { // Eat exception, since this is expected after delete was tested } }
/** * @return boolean */ protected function runLoop() { while (true) { $this->output->writeln(""); $this->output->writeln("Waiting for jobs..."); $job = $this->pheanstalk->reserve(); $this->output->writeln(sprintf("Received job %s.", $job->getId())); if ($this->runJob($job)) { $this->output->writeln(sprintf("Delete %s.", $job->getId())); $this->pheanstalk->delete($job); } else { // no handler exists, re-queue for in 60 seconds, maybe restart happend. $this->output->writeln(sprintf("Release %s.", $job->getId())); $this->pheanstalk->release($job, 100, 60); } } }