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