コード例 #1
0
 function gearman_status()
 {
     $res = new response();
     require_once 'Net/Gearman/Manager.php';
     $id = $this->params["id"];
     $server = Doo::db()->getOne('GearmanJobServers', array('where' => "id = {$id}"));
     if ($server == false) {
         $res->message = "invalid id";
         $res->success = false;
     } else {
         try {
             $manager = new Net_Gearman_Manager($server->hostname . ":" . $server->port);
             $res->data = $manager->status();
             $res->success = true;
         } catch (Net_Gearman_Exception $e) {
             $res->message = $e->getMessage();
             $res->success = false;
         }
     }
     echo $res->to_json();
 }
コード例 #2
0
 /**
  * Returns information about Gearman registered functions
  *
  * @return array
  */
 public function getFunctionData()
 {
     $data = array();
     $i = 0;
     $groupDataTmp = array();
     foreach ($this->_servers as $serverIndex => $server) {
         if (!empty($this->_filterServers) && !in_array($serverIndex, $this->_filterServers)) {
             continue;
         }
         try {
             $gearmanManager = new Net_Gearman_Manager($server['address']);
             $status = $gearmanManager->status();
             $gearmanManager->disconnect();
             unset($gearmanManager);
             foreach ($status as $workerName => $workerStatus) {
                 if (strlen($this->_filterName) == 0 || stripos($workerName, $this->_filterName) !== false) {
                     $workerStatus['name'] = $this->_groupby == self::GROUP_SERVER ? '+' : $workerName;
                     $workerStatus['server'] = $this->_groupby == self::GROUP_NAME ? '+' : $server['name'];
                     if ($this->_groupby != self::GROUP_NONE) {
                         if (isset($groupDataTmp[$workerStatus[$this->_groupby]])) {
                             $k = $groupDataTmp[$workerStatus[$this->_groupby]];
                             foreach (array('in_queue', 'jobs_running', 'capable_workers') as $key) {
                                 $data[$k][$key] += $workerStatus[$key];
                             }
                         } else {
                             $groupDataTmp[$workerStatus[$this->_groupby]] = $i;
                             $data[] = $workerStatus;
                             $i++;
                         }
                     } else {
                         $data[] = $workerStatus;
                         $i++;
                     }
                 }
             }
         } catch (Exception $e) {
             $this->_addError($e->getMessage());
         }
     }
     $data = $this->_sortData($data, $this->_getSortAvailableFunctions());
     return $data;
 }
コード例 #3
0
 function gearman_status($server)
 {
     require_once 'Net/Gearman/Manager.php';
     try {
         $manager = new Net_Gearman_Manager($server->hostname . ":" . $server->port);
         $res['data'] = $manager->status();
         $res['success'] = true;
     } catch (Net_Gearman_Exception $e) {
         $res['data'] = $e->getMessage();
         $res['success'] = false;
     }
     return $res;
 }