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 } }