예제 #1
0
 /**
  * Test that at least a worker is working
  */
 public function ping($config = 'default', $delay = null)
 {
     $schedule = null;
     if (isset($delay)) {
         $schedule = new DateTime(null, new DateTimeZone('UTC'));
         $schedule->add(new DateInterval("PT{$delay}S"));
     }
     if ($this->verbose) {
         if (isset($schedule)) {
             $this->out('Pinging in ' . $delay . ' seconds (' . $schedule->format('Y-m-d H:i:s') . ' UTC)... ', false);
         } else {
             $this->out('Pinging... ', false);
         }
     }
     $job = Gearman::adapter($config);
     $job->getClient()->setTimeout(5000);
     $result = @Gearman::run($config, 'li3_gearman\\Gearman::ping', isset($schedule) ? [true] : [], ['priority' => Job::PRIORITY_HIGH, 'background' => isset($schedule), 'schedule' => isset($schedule) ? $schedule : null]);
     if ($result || isset($schedule)) {
         if (isset($schedule)) {
             $this->out('Scheduled');
         } else {
             $this->out($result);
         }
         return;
     }
     $this->error('ERROR');
     $this->_stop(1);
 }