示例#1
0
 /**
  * 重新更新配置 
  * 
  * @param int $interval 
  * @access protected
  * @return void
  */
 protected function _reconfig($interval)
 {
     // 缓存监控器数据
     $redis = \swan\redis\sw_redis::singleton();
     $monitor_data = array();
     try {
         $monitor_data = \lib\inner_client\sw_inner_client::call('user', 'dconfig.monitor');
         if (isset($monitor_data['data'])) {
             $monitor_data = $monitor_data['data'];
         } else {
             $monitor_data = array();
         }
     } catch (\swan\exception\sw_exception $e) {
         $this->log($e->getMessage(), LOG_INFO);
     }
     $old_monitor_ids = $redis->smembers(SWAN_CACHE_MONITOR_IDS);
     $monitor_ids = array();
     foreach ($monitor_data as $key => $value) {
         $cache_data = json_encode($value);
         $redis->set(SWAN_CACHE_MONITOR_PREFIX . $key, $cache_data, self::EXPIRE_TIME);
         $monitor_ids[] = $key;
         $redis->sadd(SWAN_CACHE_MONITOR_IDS, $key);
         $redis->expire(SWAN_CACHE_MONITOR_IDS, self::EXPIRE_TIME);
     }
     $del_monitor_ids = array_diff($old_monitor_ids, $monitor_ids);
     foreach ($del_monitor_ids as $key) {
         $redis->srem(SWAN_CACHE_MONITOR_IDS, $key);
         $redis->delete(SWAN_CACHE_MONITOR_PREFIX . $key);
     }
     // 缓存监控适配器相关数据
     try {
         $madapter_data = \lib\inner_client\sw_inner_client::call('user', 'dconfig.madapter');
         if (isset($madapter_data['data'])) {
             $madapter_data = $madapter_data['data'];
         } else {
             $madapter_data = array();
         }
     } catch (\swan\exception\sw_exception $e) {
         $this->log($e->getMessage(), LOG_INFO);
     }
     $old_madapter_ids = $redis->smembers(SWAN_CACHE_MADAPTER_IDS);
     $madapter_ids = array();
     foreach ($madapter_data as $madapter_id => $value) {
         if (isset($value['archives'])) {
             $cache_data = json_encode($value['archives']);
             $redis->set(SWAN_CACHE_MADAPTER_ARCHIVE_PREFIX . $madapter_id, $cache_data, self::EXPIRE_TIME);
         }
         if (isset($value['metrics'])) {
             $scache_id = SWAN_CACHE_METRIC_IDS . $madapter_id;
             $old_metric_ids = $redis->smembers($scache_id);
             $metric_ids = array();
             foreach ($value['metrics'] as $val) {
                 $cache_id = SWAN_CACHE_METRIC_PREFIX . $madapter_id . '_' . $val['metric_id'];
                 $cache_data = json_encode($val);
                 $redis->set($cache_id, $cache_data, self::EXPIRE_TIME);
                 $metric_ids[] = $val['metric_id'];
                 $redis->sadd($scache_id, $val['metric_id']);
                 $redis->expire($scache_id, self::EXPIRE_TIME);
             }
             $del_metric_ids = array_diff($old_metric_ids, $metric_ids);
             foreach ($del_metric_ids as $metric_id) {
                 $redis->srem($scache_id, $metric_id);
                 $redis->delete(SWAN_CACHE_METRIC_PREFIX . $madapter_id . '_' . $metric_id);
             }
         }
         if (isset($value['basic'])) {
             $cache_data = json_encode($value['basic']);
             $redis->set(SWAN_CACHE_MADAPTER_PREFIX . $madapter_id, $cache_data, self::EXPIRE_TIME);
             $madapter_ids[] = $madapter_id;
             $redis->sadd(SWAN_CACHE_MADAPTER_IDS, $madapter_id);
             $redis->expire(SWAN_CACHE_MADAPTER_IDS, self::EXPIRE_TIME);
         }
     }
     $del_madapter_ids = array_diff($old_madapter_ids, $madapter_ids);
     foreach ($del_madapter_ids as $madapter_id) {
         $redis->srem(SWAN_CACHE_MONITOR_IDS, $madapter_id);
         $redis->delete(SWAN_CACHE_MADAPTER_PREFIX . $madapter_id);
     }
 }
示例#2
0
 /**
  * 入库设备、设备监控适配器 
  * 
  * @access protected
  * @return void
  */
 protected function _init_devices()
 {
     foreach ($this->__devices as $device_name => $device) {
         $monitors = $device['monitors'];
         unset($device['monitors']);
         $data = \lib\inner_client\sw_inner_client::call('user', 'device.add', $device);
         if ($data['code'] !== 10000) {
             throw new sw_exception("add device: {$device_name} .," . $data['msg']);
         }
         $device_id = $data['data']['device_id'];
         foreach ($monitors as $monitor_name => $value) {
             $madapter_name = $value['madapter_name'];
             $monitor_name = $value['name'];
             $attr_data = array();
             foreach ($value['attrs'] as $attr_name => $attr_value) {
                 if (!isset($this->__madapter_ids[$madapter_name]['attr_ids'][$attr_name])) {
                     continue;
                 }
                 $attr_data[] = array('attr_id' => $this->__madapter_ids[$madapter_name]['attr_ids'][$attr_name], 'value' => $attr_value);
             }
             $post_data = array('device_id' => $device_id, 'madapter_id' => $this->__madapter_ids[$madapter_name]['id'], 'monitor_name' => $monitor_name, 'attr_data' => json_encode($attr_data));
             $data = \lib\inner_client\sw_inner_client::call('user', 'dmonitor.add', $post_data);
             if ($data['code'] !== 10000) {
                 throw new sw_exception("add device: {$device_name} .,monitor_name: {$monitor_name}" . $data['msg']);
             }
             $this->__monitor_ids[$device_name][$monitor_name] = $data['data'];
         }
     }
 }