/** * 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; }