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