예제 #1
0
 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
     }
 }
예제 #2
0
 /**
  * @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);
         }
     }
 }