コード例 #1
0
 /**
  * Returns information about workers connected to Gearman server
  *
  * @return array
  */
 public function getWorkersData()
 {
     $data = 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']);
             $workers = $gearmanManager->workers();
             $gearmanManager->disconnect();
             unset($gearmanManager);
             foreach ($workers as $worker) {
                 if (strlen($this->_filterName) == 0 || stripos($worker['ip'], $this->_filterName) !== false || stripos(join('$#!', $worker['abilities']), $this->_filterName) !== false) {
                     sort($worker['abilities'], SORT_STRING);
                     $worker['server'] = $server['name'];
                     $data[] = $worker;
                 }
             }
         } catch (Exception $e) {
             $this->_addError($e->getMessage());
         }
     }
     $data = $this->_sortData($data, $this->_getSortAvailableWorkers());
     return $data;
 }