<?php require_once 'core.php'; use lib\rrd_store\sw_update; $data = array(1 => 3, 2 => 3, 3 => 3, 4 => 3, 5 => 3, 6 => 3); $time = time(); $rev = sw_update::update('2_4', $data, $time); sleep(2); $data = array(8 => 2); $rev = sw_update::update('2_4', $data, $time);
/** * 处理收到的信息并转发出去 * * @param string $data 收到的信息 * @param string $client_key 客户端连接的 key * @return void */ public function process_receive_data($job) { $data = $job->workload(); $this->log("log rrd_store " . $data, LOG_DEBUG); $data = rtrim($data); $data = json_decode($data, true); if (isset($data[1])) { list($device_id, $monitor_id, $metric_id) = explode('_', $data[0]); $monitor_key = $device_id . '_' . $monitor_id; if (isset($this->__rrd_cache[$monitor_key]['data']) && isset($this->__rrd_cache[$monitor_key]['time']) && $data[1]['time'] >= $this->__rrd_cache[$monitor_key]['time'] + 5) { try { sw_update::update($monitor_key, $this->__rrd_cache[$monitor_key]['data'], $this->__rrd_cache[$monitor_key]['time']); $this->log('update success data:' . var_export($this->__rrd_cache[$monitor_key], true), LOG_INFO); } catch (\Exception $e) { $this->log($e->getMessage(), LOG_INFO); } $this->__rrd_cache[$monitor_key]['data'] = array(); $this->__last_time[$monitor_key] = $this->__rrd_cache[$monitor_key]['time']; } if (!isset($this->__rrd_cache[$monitor_key]['data'])) { $this->__rrd_cache[$monitor_key]['data'] = array(); } // 第一次存储没有 __last_time 可以通过 if (!isset($this->__last_time[$monitor_key]) || $data[1]['time'] > $this->__last_time[$monitor_key]) { $this->__rrd_cache[$monitor_key]['data'][$metric_id] = $data[1]['value']; $this->__rrd_cache[$monitor_key]['time'] = $data[1]['time']; } } }