public function index() { $res = array(); // UPTIME if ($str = @file('/proc/uptime')) { $str = explode(' ', implode('', $str)); $res['uptime'] = $this->getDay(trim($str[0])); } // MEMORY if ($str = @file('/proc/meminfo')) { $str = implode('', $str); preg_match_all('/MemTotal\\s{0,}\\:+\\s{0,}([\\d\\.]+).+?MemFree\\s{0,}\\:+\\s{0,}([\\d\\.]+).+?Cached\\s{0,}\\:+\\s{0,}([\\d\\.]+).+?SwapTotal\\s{0,}\\:+\\s{0,}([\\d\\.]+).+?SwapFree\\s{0,}\\:+\\s{0,}([\\d\\.]+)/s', $str, $buf); preg_match_all('/Buffers\\s{0,}\\:+\\s{0,}([\\d\\.]+)/s', $str, $buffers); $res['memTotal'] = round($buf[1][0] / 1024, 2); $res['memFree'] = round($buf[2][0] / 1024, 2); $res['memBuffers'] = round($buffers[1][0] / 1024, 2); $res['memCached'] = round($buf[3][0] / 1024, 2); $res['memUsed'] = $res['memTotal'] - $res['memFree']; $res['memPercent'] = floatval($res['memTotal']) != 0 ? round($res['memUsed'] / $res['memTotal'] * 100, 2) : 0; $res['memRealUsed'] = $res['memTotal'] - $res['memFree'] - $res['memCached'] - $res['memBuffers']; //真实内存使用 $res['memRealFree'] = $res['memTotal'] - $res['memRealUsed']; //真实空闲 $res['memRealPercent'] = floatval($res['memTotal']) != 0 ? round($res['memRealUsed'] / $res['memTotal'] * 100, 2) : 0; //真实内存使用率 $res['memCachedPercent'] = floatval($res['memCached']) != 0 ? round($res['memCached'] / $res['memTotal'] * 100, 2) : 0; //Cached内存使用率 $res['swapTotal'] = round($buf[4][0] / 1024, 2); $res['swapFree'] = round($buf[5][0] / 1024, 2); $res['swapUsed'] = round($res['swapTotal'] - $res['swapFree'], 2); $res['swapPercent'] = floatval($res['swapTotal']) != 0 ? round($res['swapUsed'] / $res['swapTotal'] * 100, 2) : 0; } // LOAD AVG if ($str = @file('/proc/loadavg')) { $str = explode(' ', implode('', $str)); $str = array_chunk($str, 4); $res['loadAvg'] = implode(' ', $str[0]); } //数据库信息统计 $data = (new \Think\Model())->query('SHOW STATUS'); $sql = array(); foreach ($data as &$val) { switch ($val['variable_name']) { case 'Uptime': $sql['uptime'] = $this->getDay($val['value']); break; case 'Queries': $sql['query'] = $val['value']; break; case 'Qcache_hits': $sql['qc_hits'] = $val['value']; break; case 'Qcache_inserts': $sql['qc_inserts'] = $val['value']; break; case 'Threads_connected': $sql['connection'] = $val['value']; break; } } $sql['hit_rate'] = round(($sql['qc_hits'] - $sql['qc_inserts']) / $sql['qc_hits'] * 100, 2); unset($data); //微信数据统计 $wechat_data = S('wechat'); if (!$wechat_data) { import('Org.Wechat.wechat'); $yesterday = date('Y-m-d', NOW_TIME - 86400); $wechat = new Wechat(array('token' => C('WECHAT_TOKEN'), 'encodingaeskey' => C('WECHAT_AES_KEY'), 'appid' => C('WECHAT_APPID'), 'appsecret' => C('WECHAT_APPSECRET'))); $tmp = $wechat->getDatacube('user', 'summary', $yesterday, $yesterday); $wechat_data['user'] = $tmp[0]; $tmp = $wechat->getDatacube('interface', 'summary', $yesterday); $wechat_data['interface'] = $tmp[0]; unset($tmp); S('wechat', $wechat_data, 3600); } $this->assign('system', $res); $this->assign('sql', $sql); $this->assign('wechat', $wechat_data); $this->display(); }