示例#1
0
文件: Zabbix.php 项目: jiang51/monda
 function apiCmd($cmd, $req)
 {
     $ckey = md5($cmd . serialize($req));
     $ret = self::$apicache->load($ckey);
     if ($ret === NULL) {
         if (!isset(self::$api)) {
             if (!self::init_api()) {
                 CliDebug::warn("Zabbix Api query ignored (zapi=false)! ({$cmd})\n");
                 return array();
             }
         }
         if (Options::get("progress")) {
             CliDebug::progress("A\r");
         }
         CliDebug::dbg("Zabbix Api query ({$cmd})\n");
         $ret = self::$api->{$cmd}($req);
         self::$apicache->save($ckey, $ret, array(Nette\Caching\Cache::EXPIRE => Options::get("apicacheexpire")));
     }
     return $ret;
 }
示例#2
0
文件: Monda.php 项目: jiang51/monda
 static function doJob()
 {
     if (!Options::get("fork")) {
         return true;
     }
     if (!self::$jobstats) {
         self::initJobServer();
     }
     if (isset(Options::get("maxload"))) {
         list($min1, $min5, $min15) = sys_getloadavg();
         while ($min1 > Options::get("maxload")) {
             CliDebug::warn(sprintf("Waiting for lower loadavg (actual=%f,max=%f)\n", $min1, Options::get("maxload")));
             self::systemStats(5);
             list($min1, $min5, $min15) = sys_getloadavg();
         }
     }
     /* if (isset(Options::get("maxbackends"))) {
            $cnt=self::zbackends();
            $cnt2=self::mbackends();
            while ($cnt>Options::get("maxbackends") || $cnt2>Options::get("maxbackends")) {
                CliDebug::warn(sprintf("Waiting for lower number of psql backends (actual=[zabbix=%d,monda=%d],max=%d)\n",$cnt,$cnt2,Options::get("maxbackends")));
                $stat=self::systemStats(10);
                $cnt= self::zbackends();
                $cnt2=self::mbackends();
            }
        } */
     if (isset(Options::get("maxcpuwait"))) {
         while (self::$jobstats["iowait"] > Options::get("maxcpuwait")) {
             CliDebug::warn(sprintf("Waiting for lower iowait (actual=%f,max=%f)\n", self::$jobstats["iowait"], Options::get("maxcpuwait")));
             self::systemStats(5);
         }
     }
     if (!function_exists('pcntl_fork') || !function_exists('pcntl_wait') || !function_exists('pcntl_wifexited')) {
         CliDebug::warn("pcntl_* functions disabled, cannot fork!\n");
         return true;
     }
     if (self::$childs < Options::get("fork")) {
         $pid = pcntl_fork();
         if ($pid == -1) {
             mexit(3, "Cannot fork");
         } else {
             if ($pid) {
                 self::$childpids[] = $pid;
                 self::$childs++;
                 //CliDebug::info("Jobserver: Parent (childs=self::$childs)\n");
                 return false;
             } else {
                 putenv("MONDA_CHILD=1");
                 //CliDebug::info("Jobserver: Child (childs=self::$childs)\n");
                 return true;
             }
         }
     } else {
         self::waitForChilds();
     }
 }