PHP服务器探针的实现代码
程序员文章站
2022-03-17 21:45:06
...
本文主要和大家分享PHP服务器探针的实现代码,文章有点长,希望能帮助到大家。
<?phperror_reporting(0); //抑制所有错误信息@header("content-Type: text/html; charset=utf-8"); //语言强制ob_start(); date_default_timezone_set('Asia/Shanghai');//此句用于消除时间差$time_start = microtime_float();/** * */class ServerInfo{ //服务器参数 public $S = array( 'YourIP', //你的IP 'DomainIP', //服务器域名和IP及进程用户名 'Flag', //服务器标识 'OS', //服务器操作系统具体 'Language', //服务器语言 'Name', //服务器主机名 'Email', //服务器管理员邮箱 'WebEngine', //服务器WEB服务引擎 'WebPort', //web服务端口 'WebPath', //web路径 'ProbePath', //本脚本所在路径 'sTime' //服务器时间 ); public $sysInfo; //系统信息,windows和linux public $CPU_Use; public $hd = array( 't', //硬盘总量 'f', //可用 'u', //已用 'PCT', //使用率 ); public $NetWork = array( 'NetWorkName', //网卡名称 'NetOut', //出网总量 'NetInput', //入网总量 'OutSpeed', //出网速度 'InputSpeed' //入网速度 ); //网卡流量 function __construct(){ $this->S['YourIP'] = @$_SERVER['REMOTE_ADDR']; $domain = $this->OS()?$_SERVER['SERVER_ADDR']:@gethostbyname($_SERVER['SERVER_NAME']); $this->S['DomainIP'] = @get_current_user().' - '.$_SERVER['SERVER_NAME'].'('.$domain.')'; $this->S['Flag'] = empty($this->sysInfo['win_n'])?@php_uname():$this->sysInfo['win_n']; $os = explode(" ", php_uname()); $oskernel = $this->OS()?$os[2]:$os[1]; $this->S['OS'] = $os[0].'内核版本:'.$oskernel; $this->S['Language'] = getenv("HTTP_ACCEPT_LANGUAGE"); $this->S['Name'] = $this->OS()?$os[1]:$os[2]; $this->S['Email'] = $_SERVER['SERVER_ADMIN']; $this->S['WebEngine'] = $_SERVER['SERVER_SOFTWARE']; $this->S['WebPort'] = $_SERVER['SERVER_PORT']; $this->S['WebPath'] = $_SERVER['DOCUMENT_ROOT']?str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']):str_replace('\\','/',dirname(__FILE__)); $this->S['ProbePath'] = str_replace('\\','/',__FILE__)?str_replace('\\','/',__FILE__):$_SERVER['SCRIPT_FILENAME']; $this->S['sTime'] = date('Y-m-d H:i:s'); $this->sysInfo = $this->GetsysInfo(); //var_dump($this->sysInfo); $CPU1 = $this->GetCPUUse(); sleep(1); $CPU2 = $this->GetCPUUse(); $data = $this->GetCPUPercent($CPU1, $CPU2); $this->CPU_Use =$data['cpu0']['user']."%us, ".$data['cpu0']['sys']."%sy, ".$data['cpu0']['nice']."%ni, ".$data['cpu0']['idle']."%id, ".$data['cpu0']['iowait']."%wa, ".$data['cpu0']['irq']."%irq, ".$data['cpu0']['softirq']."%softirq"; if(!$this->OS()) $this->CPU_Use = '目前只支持Linux系统'; $this->hd = $this->GetDisk(); $this->NetWork = $this->GetNetWork(); } public function OS(){ return DIRECTORY_SEPARATOR=='/'?true:false; } public function GetsysInfo(){ switch (PHP_OS) { case 'Linux': $sysInfo = $this->sys_linux(); break; case 'FreeBSD': $sysInfo = $this->sys_freebsd(); break; default: # code... break; } return $sysInfo; } public function sys_linux(){ //linux系统探测 $str = @file("/proc/cpuinfo"); //获取CPU信息 if(!$str) return false; $str = implode("", $str); @preg_match_all("/model\s+name\s{0,}\:+\s{0,}([\w\s\)\@.-]+)([\r\n]+)/s", $str, $model); //CPU 名称 @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); //CPU频率 @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); //CPU缓存 @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips); // if(is_array($model[1])){ $cpunum = count($model[1]); $x1 = $cpunum>1?' ×'.$cpunum:''; $mhz[1][0] = ' | 频率:'.$mhz[1][0]; $cache[1][0] = ' | 二级缓存:'.$cache[1][0]; $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0]; $res['cpu']['num'] = $cpunum; $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1; if(is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']); if(is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']); if(is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']); if(is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("<br />", $res['cpu']['bogomips']); } //服务器运行时间 $str = @file("/proc/uptime"); if(!$str) return false; $str = explode(" ", implode("", $str)); $str = trim($str[0]); $min = $str/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days."天".$hours."小时".$min."分钟"; //内存 $str = @file("/proc/meminfo"); if(!$str) return false; $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); $resmem['memTotal'] = round($buf[1][0]/1024, 2); $resmem['memFree'] = round($buf[2][0]/1024, 2); $resmem['memBuffers'] = round($buffers[1][0]/1024, 2); $resmem['memCached'] = round($buf[3][0]/1024, 2); $resmem['memUsed'] = $resmem['memTotal']-$resmem['memFree']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealUsed'] = $resmem['memTotal'] - $resmem['memFree'] - $resmem['memCached'] - $resmem['memBuffers']; //真实内存使用 $resmem['memRealFree'] = $resmem['memTotal'] - $resmem['memRealUsed']; //真实空闲 $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; //真实内存使用率 $resmem['memCachedPercent'] = (floatval($resmem['memCached'])!=0)?round($resmem['memCached']/$resmem['memTotal']*100,2):0; //Cached内存使用率 $resmem['swapTotal'] = round($buf[4][0]/1024, 2); $resmem['swapFree'] = round($buf[5][0]/1024, 2); $resmem['swapUsed'] = round($resmem['swapTotal']-$resmem['swapFree'], 2); $resmem['swapPercent'] = (floatval($resmem['swapTotal'])!=0)?round($resmem['swapUsed']/$resmem['swapTotal']*100,2):0; $resmem = $this->formatmem($resmem); //格式化内存显示单位 $res = array_merge($res,$resmem); // LOAD AVG 系统负载 $str = @file("/proc/loadavg"); if (!$str) return false; $str = explode(" ", implode("", $str)); $str = array_chunk($str, 4); $res['loadAvg'] = implode(" ", $str[0]); return $res; } public function sys_freebsd(){ //freeBSD系统探测 $res['cpu']['num'] = do_command('sysctl','hw.ncpu'); //CPU $res['cpu']['model'] = do_command('sysctl','hw.model'); $res['loadAvg'] = do_command('sysctl','vm.loadavg'); //Load AVG 系统负载 //uptime $buf = do_command('sysctl','kern.boottime'); $buf = explode(' ', $buf); $sys_ticks = time()-intval($buf[3]); $min = $sys_ticks/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days.'天'.$hours.'小时'.$min.'分钟'; //内存 $buf = do_command('sysctl','hw.physmem'); $resmem['memTotal'] = round($buf/1024/1024, 2); $str = do_command('sysctl','vm.vmtotal'); preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\@.-]+)([\r\n]+)/s", $str, $model); //CPU 名称 @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); //CPU频率 @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); //CPU缓存 @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips); // if(is_array($model[1])){ $cpunum = count($model[1]); $x1 = $cpunum>1?' ×'.$cpunum:''; $mhz[1][0] = ' | 频率:'.$mhz[1][0]; $cache[1][0] = ' | 二级缓存:'.$cache[1][0]; $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0]; $res['cpu']['num'] = $cpunum; $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1; if(is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']); if(is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']); if(is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']); if(is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("<br />", $res['cpu']['bogomips']); } //服务器运行时间 $str = @file("/proc/uptime"); if(!$str) return false; $str = explode(" ", implode("", $str)); $str = trim($str[0]); $min = $str/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days."天".$hours."小时".$min."分钟"; //内存 $str = @file("/proc/meminfo"); if(!$str) return false; $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); $resmem['memTotal'] = round($buf[1][0]/1024, 2); $resmem['memFree'] = round($buf[2][0]/1024, 2); $resmem['memBuffers'] = round($buffers[1][0]/1024, 2); $resmem['memCached'] = round($buf[3][0]/1024, 2); $resmem['memUsed'] = $resmem['memTotal']-$resmem['memFree']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealUsed'] = $resmem['memTotal'] - $resmem['memFree'] - $resmem['memCached'] - $resmem['memBuffers']; //真实内存使用 $resmem['memRealFree'] = $resmem['memTotal'] - $resmem['memRealUsed']; //真实空闲 $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; //真实内存使用率 $resmem['memCachedPercent'] = (floatval($resmem['memCached'])!=0)?round($resmem['memCached']/$resmem['memTotal']*100,2):0; //Cached内存使用率 $resmem['swapTotal'] = round($buf[4][0]/1024, 2); $resmem['swapFree'] = round($buf[5][0]/1024, 2); $resmem['swapUsed'] = round($resmem['swapTotal']-$resmem['swapFree'], 2); $resmem['swapPercent'] = (floatval($resmem['swapTotal'])!=0)?round($resmem['swapUsed']/$resmem['swapTotal']*100,2):0; $resmem = $this->formatmem($resmem); //格式化内存显示单位 $res = array_merge($res,$resmem); // LOAD AVG 系统负载 $str = @file("/proc/loadavg"); if (!$str) return false; $str = explode(" ", implode("", $str)); $str = array_chunk($str, 4); $res['loadAvg'] = implode(" ", $str[0]); return $res; } public function sys_freebsd(){ //freeBSD系统探测 $res['cpu']['num'] = do_command('sysctl','hw.ncpu'); //CPU $res['cpu']['model'] = do_command('sysctl','hw.model'); $res['loadAvg'] = do_command('sysctl','vm.loadavg'); //Load AVG 系统负载 //uptime $buf = do_command('sysctl','kern.boottime'); $buf = explode(' ', $buf); $sys_ticks = time()-intval($buf[3]); $min = $sys_ticks/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days.'天'.$hours.'小时'.$min.'分钟'; //内存 $buf = do_command('sysctl','hw.physmem'); $resmem['memTotal'] = round($buf/1024/1024, 2); $str = do_command('sysctl','vm.vmtotal'); preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\n/i", $str, $buff, PREG_SET_ORDER); preg_match_all("/\nReal Memory[\:\s]*Total[\s]∗([\d]+)K[\s]∗Active[\s]∗([\d]+)KTotal[\s]∗([\d]+)K[\s]∗Active[\s]∗([\d]+)K\n/i", $str, $buf, PREG_SET_ORDER); $resmem['memRealUsed'] = round($buf[0][2]/1024, 2); $resmem['memCached'] = round($buff[0][2]/1024, 2); $resmem['memUsed'] = round($buf[0][1]/1024, 2)+$resmem['memCached']; $resmem['memFree'] = $resmem['memTotal']-$resmem['memUsed']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; $resmem = $this->formatmem($resmem); $res = array_merge($res,$resmem); return $res; } public function do_command($cName, $args){ //执行系统命令FreeBSD $cName = empty($cName)?'sysctl':timr($cName); if(empty($args)) return false; $args = '-n '.$args; $buffers = ''; $command = find_command($cName); if(!$command) return false; if($fp = @popen("$command $args", 'r')){ while (!@feof($fp)) { $buffers .= @fgets($fp, 4096); } pclose($fp); return trim($buffers); } return false; } public function find_command($cName){ //确定shell位置 $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); foreach($path as $p) { if (@is_executable("$p/$commandName")) return "$p/$commandName"; } return false; } public function GetCPUUse(){ $data = @file('/proc/stat'); $cores = array(); foreach ($data as $line) { if(preg_match('/^cpu[0-9]/', $line)){ $info = explode(' ', $line); $cores[]=array('user'=>$info[1],'nice'=>$info[2],'sys' => $info[3],'idle'=>$info[4],'iowait'=>$info[5],'irq' => $info[6],'softirq' => $info[7]); } } return $cores; } public function GetCPUPercent($CPU1,$CPU2){ $num = count($CPU1); if($num!==count($CPU2)) return; $cups = array(); for ($i=0; $i < $num; $i++) { $dif = array(); $dif['user'] = $CPU2[$i]['user'] - $CPU1[$i]['user']; $dif['nice'] = $CPU2[$i]['nice'] - $CPU1[$i]['nice']; $dif['sys'] = $CPU2[$i]['sys'] - $CPU1[$i]['sys']; $dif['idle'] = $CPU2[$i]['idle'] - $CPU1[$i]['idle']; $dif['iowait'] = $CPU2[$i]['iowait'] - $CPU1[$i]['iowait']; $dif['irq'] = $CPU2[$i]['irq'] - $CPU1[$i]['irq']; $dif['softirq'] = $CPU2[$i]['softirq'] - $CPU1[$i]['softirq']; $total = array_sum($dif); $cpu = array(); foreach($dif as $x=>$y) $cpu[$x] = round($y/$total*100, 2); $cpus['cpu'.$i] = $cpu; } return $cpus; } public function GetDisk(){ //获取硬盘情况 $d['t'] = round(@disk_total_space(".")/(1024*1024*1024),3); $d['f'] = round(@disk_free_space(".")/(1024*1024*1024),3); $d['u'] = $d['t']-$d['f']; $d['PCT'] = (floatval($d['t'])!=0)?round($d['u']/$d['t']*100,2):0; return $d; } private function formatmem($mem){ //格试化内存显示单位 if(!is_array($mem)) return $mem; $tmp = array( 'memTotal', 'memUsed', 'memFree', 'memPercent', 'memCached', 'memRealPercent', 'swapTotal', 'swapUsed', 'swapFree', 'swapPercent' ); foreach ($mem as $k=>$v) { if(!strpos($k, 'Percent')){ $v = $v<1024?$v.' M':$v.' G'; } $mem[$k] = $v; } foreach ($tmp as $v) { $mem[$v] = $mem[$v]?$mem[$v]:0; } return $mem; } public function GetNetWork(){ //网卡流量 $strs = @file("/proc/net/dev"); $lines = count($strs); for ($i=2; $i < $lines; $i++) { preg_match_all( "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $strs[$i], $info ); $res['OutSpeed'][$i] = $info[10][0]; $res['InputSpeed'][$i] = $info[2][0]; $res['NetOut'][$i] = $this->formatsize($info[10][0]); $res['NetInput'][$i] = $this->formatsize($info[2][0]); $res['NetWorkName'][$i] = $info[1][0]; } return $res; } public function formatsize($size) { //单位转换 $danwei=array(' B ',' K ',' M ',' G ',' T '); $allsize=array(); $i=0; for($i = 0; $i <5; $i++) { if(floor($size/pow(1024,$i))==0){break;} } for($l = $i-1; $l >=0; $l--) { $allsize1[$l]=floor($size/pow(1024,$l)); $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; } $len=count($allsize); for($j = $len-1; $j >=0; $j--) { $fsize=$fsize.$allsize[$j].$danwei[$j]; } return $fsize; } public function phpexts(){ //以编译模块 $able = get_loaded_extensions(); $str = ''; foreach ($able as $key => $value) { if ($key!=0 && $key%13==0) { $str .= '<br />'; } $str .= "$value "; } return $str; } public function show($varName){ //检测PHP设置参数 switch($result = get_cfg_var($varName)){ case 0: return '<font color="red">×</font>'; break; case 1: return '<font color="green">√</font>'; break; default: return $result; break; } } public function GetDisFuns(){ $disFuns=get_cfg_var("disable_functions"); $str = ''; if(empty($disFuns)){ $str = '<font color=red>×</font>'; }else{ $disFunsarr = explode(',',$disFuns); foreach ($disFunsarr as $key=>$value) { if ($key!=0 && $key%8==0) { $str .= '<br />'; } $str .= "$value "; } } return $str; } public function isfun($funName='',$j=0){ // 检测函数支持 if (!$funName || trim($funName) == '' || preg_match('~[^a-z0-9\_]+~i', $funName, $tmp)) return '错误'; if(!$j){ return (function_exists($funName) !== false) ? '<font color="green">√</font>' : '<font color="red">×</font>'; }else{ return (function_exists($funName) !== false) ? '√' : '×'; } } public function GetGDVer(){ $strgd = '<font color="red">×</font>'; if(function_exists(gd_info)) { $gd_info = @gd_info(); $strgd = $gd_info["GD Version"]; } return $strgd; } public function GetZendInfo(){ $zendInfo = array(); $zendInfo['ver'] = zend_version()?zend_version():'<font color=red>×</font>'; $phpv = substr(PHP_VERSION,2,1); $zendInfo['loader'] = $phpv>2?'ZendGuardLoader[启用]':'Zend Optimizer'; if($phpv>2){ $zendInfo['html'] = get_cfg_var("zend_loader.enable")?'<font color=green>√</font>':'<font color=red>×</font>'; }elseif(function_exists('zend_optimizer_version')){ $zendInfo['html'] = zend_optimizer_version(); }else{ $zendInfo['html']= (get_cfg_var("zend_optimizer.optimization_level") || get_cfg_var("zend_extension_manager.optimizer_ts") || get_cfg_var("zend.ze1_compatibility_mode") || get_cfg_var("zend_extension_ts"))?'<font color=green>√</font>':'<font color=red>×</font>'; } return $zendInfo; } public function GetIconcube(){ $str = '<font color=red>×</font>'; if(extension_loaded('ionCube Loader')){ $ys = ionCube_Loader_version(); $gm = '.'.(int)substr($ys, 3, 2); $str = $ys.$gm; } return $str; } public function CHKModule($cName){ if(empty($cName)) return '错误'; $str = phpversion($cName); return empty($str)?'<font color=red>×</font>':$str; } public function GetDBVer($dbname){ if(empty($dbname)) return '错误'; switch ($dbname) { case 'mysql': if(function_exists("mysql_get_server_info")){ $s = @mysql_get_server_info(); $s = $s ? ' mysql_server 版本:'.$s:''; $c = @mysql_get_client_info(); $c = $c ? ' mysql_client 版本:'.$c:''; return $s.$c; } return ''; break; case 'sqlite': if(extension_loaded('sqlite3')){ $sqliteVer = SQLite3::version(); $str = '<font color=green>√</font>'; $str .= 'SQLite3 Ver'.$sqliteVer['versionString']; }else{ $str = $this->isfun('sqlite_close'); if(strpos($str, '√')!==false){ $str .= ' 版本:'.sqlite_libversion(); } } return $str; break; default: return ''; break; } } }$title = 'PHP服务器信息探针';$j_version = '1.0.0';$S = new ServerInfo();$phpSelf = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$disFuns=get_cfg_var("disable_functions");$disFuns = strpos('phpinfo', needle)?'<font color="red">×</font>':"<a href='$phpSelf?act=phpinfo' target='_blank'>PHPINFO</a>";$strcookies = isset($_COOKIE)?'<font color="green">√</font>' : '<font color="red">×</font>';$strsmtp = get_cfg_var("SMTP")?'<font color="green">√</font>' : '<font color="red">×</font>';$smtpadd = get_cfg_var("SMTP")?get_cfg_var("SMTP"):'<font color="red">×</font>';//ajax调用实时刷新if ($_GET['act'] == "rt"){ $arr=array('useSpace'=>$S->hd['u'], 'freeSpace'=>$S->hd['f'], 'hdPercent'=>$S->hd['PCT'], 'barhdPercent'=>$S->hd['PCT'].'%', 'TotalMemory'=>$S->sysInfo['memTotal'], 'UsedMemory'=>$S->sysInfo['memUsed'], 'FreeMemory'=>$S->sysInfo['memFree'], 'CachedMemory'=>$S->sysInfo['memCached'], 'Buffers'=>$S->sysInfo['memBuffers'], 'TotalSwap'=>$S->sysInfo['swapTotal'], 'swapUsed'=>$S->sysInfo['swapUsed'], 'swapFree'=>$S->sysInfo['swapFree'], 'loadAvg'=>$S->sysInfo['loadAvg'], 'uptime'=>$S->sysInfo['uptime'], 'freetime'=>"$freetime", 'bjtime'=>"$bjtime", 'stime'=>$S->S['sTime'], 'cpuuse'=>$S->CPU_Use, 'memRealPercent'=>$S->sysInfo['memRealPercent'], 'memRealUsed'=>$S->sysInfo['memRealUsed'], 'memRealFree'=>$S->sysInfo['memRealFree'], 'memPercent'=>$S->sysInfo['memPercent'].'%', 'memCachedPercent'=>$S->sysInfo['memCachedPercent'], 'barmemCachedPercent'=>$S->sysInfo['memCachedPercent'].'%', 'swapPercent'=>$S->sysInfo['swapPercent'], 'barmemRealPercent'=>$S->sysInfo['memRealPercent'].'%', 'barswapPercent'=>$S->sysInfo['swapPercent'].'%', 'NetOut2'=>$S->NetWork['NetOut'][2], 'NetOut3'=>$S->NetWork['NetOut'][3], 'NetOut4'=>$S->NetWork['NetOut'][4], 'NetOut5'=>$S->NetWork['NetOut'][5], 'NetOut6'=>$S->NetWork['NetOut'][6], 'NetOut7'=>$S->NetWork['NetOut'][7], 'NetOut8'=>$S->NetWork['NetOut'][8], 'NetOut9'=>$S->NetWork['NetOut'][9], 'NetOut10'=>$S->NetWork['NetOut'][10], 'NetInput2'=>$S->NetWork['NetInput'][2], 'NetInput3'=>$S->NetWork['NetInput'][3], 'NetInput4'=>$S->NetWork['NetInput'][4], 'NetInput5'=>$S->NetWork['NetInput'][5], 'NetInput6'=>$S->NetWork['NetInput'][6], 'NetInput7'=>$S->NetWork['NetInput'][7], 'NetInput8'=>$S->NetWork['NetInput'][8], 'NetInput9'=>$S->NetWork['NetInput'][9], 'NetInput10'=>$S->NetWork['NetInput'][10], 'NetOutSpeed2'=>$S->NetWork['OutSpeed'][2], 'NetOutSpeed3'=>$S->NetWork['OutSpeed'][3], 'NetOutSpeed4'=>$S->NetWork['OutSpeed'][4], 'NetOutSpeed5'=>$S->NetWork['OutSpeed'][5], 'NetInputSpeed2'=>$S->NetWork['InputSpeed'][2], 'NetInputSpeed3'=>$S->NetWork['InputSpeed'][3], 'NetInputSpeed4'=>$S->NetWork['InputSpeed'][4], 'NetInputSpeed5'=>$S->NetWork['InputSpeed'][5] ); $jarr=json_encode($arr); $_GET['callback'] = htmlspecialchars($_GET['callback']); echo $_GET['callback'],'(',$jarr,')'; exit; }function memory_usage() { $memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; return $memory; }// 计时function microtime_float() { $mtime = microtime(); $mtime = explode(' ', $mtime); return $mtime[1] + $mtime[0]; }?><!DOCTYPE html><html><head><title><?=$title?></title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css"><!--* {font-family: "Microsoft Yahei",Tahoma, Arial; }body{text-align: center; margin: 0 auto; padding: 0; background-color:#fafafa;font-size:12px;font-family:Tahoma, Arial}h1 {font-size: 26px; padding: 0; margin: 0; color: #333333; font-family: "Lucida Sans Unicode","Lucida Grande",sans-serif;}h1 small {font-size: 11px; font-family: Tahoma; font-weight: bold; }a{color: #666; text-decoration:none;}a.black{color: #000000; text-decoration:none;}.w_logo{height:25px;text-align:center;color:#333;font-size: 15px; width:13%; }.j_top{display:table;font-weight:bold;background:#dedede;color:#626262;width: 100%;text-align: left; height: 25px; line-height: 25px;box-shadow: 1px 1px 1px #CCC;-moz-box-shadow: 1px 1px 1px #CCC;-webkit-box-shadow: 1px 1px 1px #CCC;-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=2, Direction=135, Color='#CCCCCC')";}.j_top a{text-align:center; width:8.7%; display: table-cell; padding: 5px 0px;}.j_top a:hover{background:#dadada;}.con{width: 90%;margin: 10px auto;}.con .j_top{ padding: 0px 10px;}.j_tb{display:table;width:100%;padding:5px 10px;border-bottom:1px solid #CCCCCC;text-align:left;}.j_td{display:table-cell;}.j_td_t{width:120px;}.j_td_c{width:50%;}.j_td_t1{width:320px;}.w_foot{height:25px;text-align:center; background:#dedede;}input{padding: 2px; background: #FFFFFF; border-top:1px solid #666666; border-left:1px solid #666666; border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; font-size:12px}input.btn{font-weight: bold; height: 20px; line-height: 20px; padding: 0 6px; color:#666666; background: #f2f2f2; border:1px solid #999;font-size:12px}.bar {border:1px solid #999999; background:#FFFFFF; height:5px; font-size:2px; width:89%; margin:2px 0 5px 0;padding:1px; overflow: hidden;}.bar_1 {border:1px dotted #999999; background:#FFFFFF; height:5px; font-size:2px; width:89%; margin:2px 0 5px 0;padding:1px; overflow: hidden;}.barli_red{background:#ff6600; height:5px; margin:0px; padding:0;}.barli_blue{background:#0099FF; height:5px; margin:0px; padding:0;}.barli_green{background:#36b52a; height:5px; margin:0px; padding:0;}.barli_black{background:#333; height:5px; margin:0px; padding:0;}.barli_1{background:#999999; height:5px; margin:0px; padding:0;}.barli{background:#36b52a; height:5px; margin:0px; padding:0;}#page {width: 100%; padding: 0 auto; margin: 0 auto; text-align: left;}#header{position:relative; padding:5px;}--></style><script language="JavaScript" type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.7/jquery.min.js"></script><script type="text/javascript">$(document).ready(function(){getJSONData();});var OutSpeed2=<?=floor($S->NetWork['OutSpeed'][2]);?>;var OutSpeed3=<?=floor($S->NetWork['OutSpeed'][3]);?>;var OutSpeed4=<?=floor($S->NetWork['OutSpeed'][4]);?>;var OutSpeed5=<?=floor($S->NetWork['OutSpeed'][5]);?>;var InputSpeed2=<?=floor($S->NetWork['InputSpeed'][2]);?>;var InputSpeed3=<?=floor($S->NetWork['InputSpeed'][3]);?>;var InputSpeed4=<?=floor($S->NetWork['InputSpeed'][4]);?>;var InputSpeed5=<?=floor($S->NetWork['InputSpeed'][5]);?>;function getJSONData(){ setTimeout("getJSONData()", 1000); $.getJSON('?act=rt&callback=?', displayData); }function ForDight(Dight,How){ if (Dight<0){ var Last=0+"B/s"; }else if (Dight<1024){ var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"B/s"; }else if (Dight<1048576){ Dight=Dight/1024; var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"K/s"; }else{ Dight=Dight/1048576; var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"M/s"; } return Last; }function displayData(dataJSON){ $("#useSpace").html(dataJSON.useSpace); $("#freeSpace").html(dataJSON.freeSpace); $("#hdPercent").html(dataJSON.hdPercent); $("#barhdPercent").width(dataJSON.barhdPercent); $("#TotalMemory").html(dataJSON.TotalMemory); $("#UsedMemory").html(dataJSON.UsedMemory); $("#FreeMemory").html(dataJSON.FreeMemory); $("#CachedMemory").html(dataJSON.CachedMemory); $("#Buffers").html(dataJSON.Buffers); $("#TotalSwap").html(dataJSON.TotalSwap); $("#swapUsed").html(dataJSON.swapUsed); $("#swapFree").html(dataJSON.swapFree); $("#swapPercent").html(dataJSON.swapPercent); $("#loadAvg").html(dataJSON.loadAvg); $("#uptime").html(dataJSON.uptime); $("#freetime").html(dataJSON.freetime); $("#stime").html(dataJSON.stime); $("#bjtime").html(dataJSON.bjtime); $("#cpuuse").html(dataJSON.cpuuse); $("#memRealUsed").html(dataJSON.memRealUsed); $("#memRealFree").html(dataJSON.memRealFree); $("#memRealPercent").html(dataJSON.memRealPercent); $("#memPercent").html(dataJSON.memPercent); $("#barmemPercent").width(dataJSON.memPercent); $("#barmemRealPercent").width(dataJSON.barmemRealPercent); $("#memCachedPercent").html(dataJSON.memCachedPercent); $("#barmemCachedPercent").width(dataJSON.barmemCachedPercent); $("#barswapPercent").width(dataJSON.barswapPercent); $("#NetOut2").html(dataJSON.NetOut2); $("#NetOut3").html(dataJSON.NetOut3); $("#NetOut4").html(dataJSON.NetOut4); $("#NetOut5").html(dataJSON.NetOut5); $("#NetOut6").html(dataJSON.NetOut6); $("#NetOut7").html(dataJSON.NetOut7); $("#NetOut8").html(dataJSON.NetOut8); $("#NetOut9").html(dataJSON.NetOut9); $("#NetOut10").html(dataJSON.NetOut10); $("#NetInput2").html(dataJSON.NetInput2); $("#NetInput3").html(dataJSON.NetInput3); $("#NetInput4").html(dataJSON.NetInput4); $("#NetInput5").html(dataJSON.NetInput5); $("#NetInput6").html(dataJSON.NetInput6); $("#NetInput7").html(dataJSON.NetInput7); $("#NetInput8").html(dataJSON.NetInput8); $("#NetInput9").html(dataJSON.NetInput9); $("#NetInput10").html(dataJSON.NetInput10); $("#NetOutSpeed2").html(ForDight((dataJSON.NetOutSpeed2-OutSpeed2),3)); OutSpeed2=dataJSON.NetOutSpeed2; $("#NetOutSpeed3").html(ForDight((dataJSON.NetOutSpeed3-OutSpeed3),3)); OutSpeed3=dataJSON.NetOutSpeed3; $("#NetOutSpeed4").html(ForDight((dataJSON.NetOutSpeed4-OutSpeed4),3)); OutSpeed4=dataJSON.NetOutSpeed4; $("#NetOutSpeed5").html(ForDight((dataJSON.NetOutSpeed5-OutSpeed5),3)); OutSpeed5=dataJSON.NetOutSpeed5; $("#NetInputSpeed2").html(ForDight((dataJSON.NetInputSpeed2-InputSpeed2),3)); InputSpeed2=dataJSON.NetInputSpeed2; $("#NetInputSpeed3").html(ForDight((dataJSON.NetInputSpeed3-InputSpeed3),3)); InputSpeed3=dataJSON.NetInputSpeed3; $("#NetInputSpeed4").html(ForDight((dataJSON.NetInputSpeed4-InputSpeed4),3)); InputSpeed4=dataJSON.NetInputSpeed4; $("#NetInputSpeed5").html(ForDight((dataJSON.NetInputSpeed5-InputSpeed5),3)); InputSpeed5=dataJSON.NetInputSpeed5; }</script></head><body><a name="j_top"></a><p id="page"> <p class="j_top"><a href="#j_php">PHP参数</a> <a href="#j_module">组件支持</a> <a href="#j_module_other">第三方组件</a> <a href="#j_db">数据库支持</a> <a href="#j_performance">性能检测</a> <a href="#j_networkspeed">网速检测</a> <a href="#j_MySQL">MySQL检测</a> <a href="#j_function">函数检测</a> <a href="#j_mail">邮件检测</a> </p> <!--Server info--> <p class="con"> <p class="j_top">服务器参数</p> <p class="j_tb"><label class="j_td j_td_t">服务器域名/IP地址</label><label><?=$S->S['DomainIP'];?></label></p> <p class="j_tb"><label class="j_td j_td_t">服务器标识</label><label><?=$S->S['Flag'];?></label></p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器操作系统</label><label class="j_td"><?=$S->S['OS'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器解译引擎</label><label class="j_td"><?=$S->S['WebEngine'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器语言</label><label class="j_td"><?=$S->S['Language'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器端口</label><label class="j_td"><?=$S->S['WebPort'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器主机名</label><label class="j_td"><?=$S->S['Name'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">绝对路径</label><label class="j_td"><?=$S->S['WebPath'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">管理员邮箱</label><label class="j_td"><?=$S->S['Email'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">探针路径</label><label class="j_td"><?=$S->S['ProbePath'];?></label></p> </p> </p> <!--Server Real-Time--> <p class="con"> <p class="j_top">服务器实时数据</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器当前时间</label><label class="j_td" id="stime"><?=$S->S['sTime'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器已运行时间</label><label class="j_td" id="uptime"><?=$S->sysInfo['uptime'];?></label></p> </p> <p class="j_tb"><label class="j_td j_td_t">CPU型号[<?=$S->sysInfo['cpu']['num'];?>核]</label><label><?=$S->sysInfo['cpu']['model'];?></label></p> <p class="j_tb"><label class="j_td j_td_t">CPU使用情况</label><label id="cpuuse"><?=$S->CPU_Use;?></label></p> <p class="j_tb"><label class="j_td j_td_t">硬盘使用状况</label> <label>总空间 <?=$S->hd['t'];?> G,已用 <font color='#333333'><span id="useSpace"><?=$S->hd['u'];?></span></font> G, 空闲 <font color='#333333'><span id="freeSpace"><?=$S->hd['f'];?></span></font> G, 使用率 <span id="hdPercent"><?=$S->hd['PCT'];?></span>% <p class="bar"><p id="barhdPercent" class="barli_black" style="width:<?=$S->hd['PCT']?>%" > </p> </p> </label> </p> <p class="j_tb"><label class="j_td j_td_t">内存使用状况</label> <label class="j_td">物理内存:共<font color='#CC0000'><?=$S->sysInfo['memTotal'];?> </font> , 已用<font color='#CC0000'><span id="UsedMemory"><?=$S->sysInfo['memUsed']?></span></font> , 空闲<font color='#CC0000'><span id="FreeMemory"><?=$S->sysInfo['memFree'];?></span></font> , 使用率<span id="memPercent"><?=$S->sysInfo['memPercent'];?></span> <p class="bar"><p id="barmemPercent" class="barli_red" style="width:<?=$S->sysInfo['memPercent'];?>%" > </p></p> <?php if($S->sysInfo['memCached']){ ?> Cache化内存为 <span id="CachedMemory"><?=$S->sysInfo['memCached'];?></span> , 使用率<span id="memCachedPercent"><?=$S->sysInfo['memCachedPercent'];?></span>% | Buffers缓冲为 <span id="Buffers"><?=$S->sysInfo['memBuffers'];?></span> <p class="bar"><p id="barmemCachedPercent" class="barli_blue" style="width:<?=$S->sysInfo['memCachedPercent'];?>%" > </p></p> 真实内存使用<span id="memRealUsed"><?=$S->sysInfo['memRealUsed'];?></span> , 真实内存空闲<span id="memRealFree"><?=$S->sysInfo['memRealFree'];?></span> , 使用率<span id="memRealPercent"><?=$S->sysInfo['memRealPercent'];?></span>% <p class="bar_1"><p id="barmemRealPercent" class="barli_1" style="width:<?=$S->sysInfo['memRealPercent'];?>%" > </p></p> <?php } ?> <?php if($S->sysInfo['swapTotal']){ ?> SWAP区:共<?=$S->sysInfo['swapTotal'];?> , 已使用<span id="swapUsed"><?=$S->sysInfo['swapUsed'];?></span> , 空闲<span id="swapFree"><?=$S->sysInfo['swapFree'];?></span> , 使用率<span id="swapPercent"><?=$S->sysInfo['swapPercent'];?></span>% <p class="bar"><p id="barswapPercent" class="barli_red" style="width:<?=$S->sysInfo['swapPercent'];?>%" > </p> </p> <?php } ?> </label> </p> <p class="j_tb"><label class="j_td j_td_t">系统平均负载</label><label class="j_td"><?=$S->sysInfo['loadAvg']?></label></p> </p> <!--net work--> <p class="con"> <p class="j_top">网络使用状况</p> <?php $netnum = count($S->NetWork); for ($i=2; $i < $netnum; $i++) { ?> <p class="j_tb"> <label class="j_td" style="width:13%"><?=$S->NetWork['NetWorkName'][$i]?></label> <label class="j_td" style="width:29%">入网:<font color='#CC0000'><span id="NetInput<?=$i;?>"><?=$S->NetWork['NetInput'][$i];?></span></font></label> <label class="j_td" style="width:14%">实时:<font color='#CC0000'><span id="NetInputSpeed<?=$i;?>">0B/s</span></font></label> <label class="j_td" style="width:29%">出网: <font color='#CC0000'><span id="NetOut<?=$i?>"><?=$S->NetWork['NetOut'][$i];?></span></font></label> <label class="j_td" style="width:14%">实时: <font color='#CC0000'><span id="NetOutSpeed<?=$i?>">0B/s</span></font></label> </p> <?php } ?> </p> <!--enbale module--> <p class="con"> <p class="j_top">PHP已编译模块检测</p> <p class="j_tb"><label class="j_td j_td_t"><?=$S->phpexts();?></label></p> </p> <!--enbale module--> <a name="j_php"></a> <p class="con"> <p class="j_top">PHP相关参数</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP信息(phpinfo):</label><label class="j_td"><?=$disFuns;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP版本(php_version):</label><label class="j_td"><?=PHP_VERSION;?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP运行方式:</label><label class="j_td"><?=strtoupper(php_sapi_name());?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">脚本占用最大内存(memory_limit):</label><label class="j_td"><?=$S::show("memory_limit");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP安全模式(safe_mode):</label><label class="j_td"><?=$S::show("safe_mode");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">POST方法提交最大限制(post_max_size):</label><label class="j_td"><?=$S::show("post_max_size");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">上传文件最大限制(upload_max_filesize):</label><label class="j_td"><?=$S::show("upload_max_filesize");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">浮点型数据显示的有效位数(precision):</label><label class="j_td"><?=$S::show("precision");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">脚本超时时间(max_execution_time):</label><label class="j_td"><?=$S::show("max_execution_time");?>秒</label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">socket超时时间(default_socket_timeout):</label><label class="j_td"><?=$S::show("default_socket_timeout");?>秒</label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP页面根目录(doc_root):</label><label class="j_td"><?=$S::show("doc_root");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">用户根目录(user_dir):</label><label class="j_td"><?=$S::show("user_dir");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">dl()函数(enable_dl):</label><label class="j_td"><?=$S::show("enable_dl");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">指定包含文件目录(include_path):</label><label class="j_td"><?=$S::show("include_path");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">显示错误信息(display_errors):</label><label class="j_td"><?=$S::show("display_errors");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">自定义全局变量(register_globals):</label><label class="j_td"><?=$S::show("register_globals");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">数据反斜杠转义(magic_quotes_gpc):</label><label class="j_td"><?=$S::show("magic_quotes_gpc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">"<?...?>"短标签(short_open_tag):</label><label class="j_td"><?=$S::show("short_open_tag");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">"<% %>"ASP风格标记(asp_tags):</label><label class="j_td"><?=$S::show("asp_tags");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">忽略重复错误信息(ignore_repeated_errors):</label><label class="j_td"><?=$S::show("ignore_repeated_errors");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">忽略重复的错误源(ignore_repeated_source):</label><label class="j_td"><?=$S::show("ignore_repeated_source");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">报告内存泄漏(report_memleaks):</label><label class="j_td"><?=$S::show("report_memleaks");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">自动字符串转义(magic_quotes_gpc):</label><label class="j_td"><?=$S::show("magic_quotes_gpc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">外部字符串自动转义(magic_quotes_runtime):</label><label class="j_td"><?=$S::show("magic_quotes_runtime");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">打开远程文件(allow_url_fopen):</label><label class="j_td"><?=$S::show("allow_url_fopen");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">声明argv和argc变量(register_argc_argv):</label><label class="j_td"><?=$S::show("register_argc_argv");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Cookie 支持:</label><label class="j_td"><?=$strcookies;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">拼写检查(ASpell Library):</label><label class="j_td"><?=$S::isfun("aspell_check_raw");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">高精度数学运算(BCMath):</label><label class="j_td"><?=$S::isfun("bcadd");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PREL相容语法(PCRE):</label><label class="j_td"><?=$S::isfun("preg_match");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PDF文档支持:</label><label class="j_td"><?=$S::isfun("pdf_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SNMP网络管理协议:</label><label class="j_td"><?=$S::isfun("snmpget");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">VMailMgr邮件处理:</label><label class="j_td"><?=$S::isfun("vm_adduser");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Curl支持:</label><label class="j_td"><?=$S::isfun("curl_init");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SMTP支持:</label><label class="j_td"><?=$strsmtp;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SMTP地址:</label><label class="j_td"><?=$smtpadd;?></label></p> </p> <p class="j_tb"> <label class="j_td j_td_t1">默认支持函数(enable_functions):</label><label class="j_td"><a href='<?=$phpSelf;?>?act=Function' target='_blank' class='static'>请点这里查看详细!</a></label> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">被禁用的函数(disable_functions):</label><label class="j_td"><?=$S::GetDisFuns();?></label></p> </p> </p> <!--组件支持--> <a name="j_module"></a> <p class="con"> <p class="j_top">组件支持</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">FTP支持:</label><label class="j_td"><?=$S::isfun("ftp_login");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">XML解析支持:</label><label class="j_td"><?=$S::isfun("xml_set_object");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Session支持:</label><label class="j_td"><?=$S::isfun("session_start");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Socket支持:</label><label class="j_td"><?=$S::isfun("socket_accept");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Calendar支持</label><label class="j_td"><?=$S::isfun('cal_days_in_month');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">允许URL打开文件:</label><label class="j_td"><?=$S::show("allow_url_fopen");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">GD库支持:</label><label class="j_td"><?=$S::GetGDVer();?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">压缩文件支持(Zlib):</label><label class="j_td"><?=$S::isfun("gzclose");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">IMAP电子邮件系统函数库:</label><label class="j_td"><?=$S::isfun("imap_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">历法运算函数库:</label><label class="j_td"><?=$S::isfun("JDToGregorian");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">正则表达式函数库:</label><label class="j_td"><?=$S::isfun("preg_match");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">WDDX支持:</label><label class="j_td"><?=$S::isfun("wddx_add_vars");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Iconv编码转换:</label><label class="j_td"><?=$S::isfun("iconv");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">mbstring:</label><label class="j_td"><?=$S::isfun("mb_eregi");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">高精度数学运算:</label><label class="j_td"><?=$S::isfun("bcadd");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">LDAP目录协议:</label><label class="j_td"><?=$S::isfun("ldap_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">MCrypt加密处理:</label><label class="j_td"><?=$S::isfun("mcrypt_cbc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">哈稀计算:</label><label class="j_td"><?=$S::isfun("mhash_count");?></label></p> </p> </p> <a name="j_module_other"></a> <!--第三方组件信息--> <p class="con"> <p class="j_top">第三方组件</p> <p class="j_tb"><?$zendInfo = $S::GetZendInfo();?> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Zend版本</label><label class="j_td"><?=$zendInfo['ver'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1"><?=$zendInfo['loader']?></label><label class="j_td"><?=$zendInfo['html'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">eAccelerator</label><label class="j_td"><?=$S->CHKModule('eAccelerator');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">ioncube</label><label class="j_td"><?=$S->GetIconcube();?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">XCache</label><label class="j_td"><?=$S->CHKModule('XCache');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">APC</label><label class="j_td"><?=$S->CHKModule('APC');?></label></p> </p> </p> <a name="w_db"></a> <!--db--> <p class="con"> <p class="j_top">数据库支持</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">MySQL 数据库:</label><label class="j_td"><?=$S::isfun('mysql_close').$S::GetDBVer('mysql');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">ODBC 数据库:</label><label class="j_td"><?=$S::isfun("odbc_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Oracle 数据库:</label><label class="j_td"><?=$S::isfun("ora_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SQL Server 数据库:</label><label class="j_td"><?$S::isfun("mssql_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">dBASE 数据库:</label><label class="j_td"><?=$S::isfun("dbase_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">mSQL 数据库:</label><label class="j_td"><?=$S::isfun("msql_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SQLite 数据库:</label><label class="j_td"><?=$S->GetDBVer('sqlite');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Hyperwave 数据库:</label><label class="j_td"><?=$S::isfun("hw_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Postgre SQL 数据库:</label><label class="j_td"><?=$S::isfun("pg_close"); ?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Informix 数据库:</label><label class="j_td"><?=$S::isfun("ifx_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">DBA 数据库:</label><label class="j_td"><?=$S::isfun("dba_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">DBM 数据库:</label><label class="j_td"><?=$S::isfun("dbmclose");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">FilePro 数据库:</label><label class="j_td"><?=$S::isfun("filepro_fieldcount");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SyBase 数据库:</label><label class="j_td"><?=$S::isfun("sybase_close");?></label></p> </p> </p> <p class="con"> <p align="center"><?php $run_time = sprintf('%0.4f', microtime_float() - $time_start);?>Processed in <?php echo $run_time?> seconds. <?php echo memory_usage();?> memory usage.</p> </p></p></body></html>
<?phperror_reporting(0); //抑制所有错误信息@header("content-Type: text/html; charset=utf-8"); //语言强制ob_start(); date_default_timezone_set('Asia/Shanghai');//此句用于消除时间差$time_start = microtime_float();/** * */class ServerInfo{ //服务器参数 public $S = array( 'YourIP', //你的IP 'DomainIP', //服务器域名和IP及进程用户名 'Flag', //服务器标识 'OS', //服务器操作系统具体 'Language', //服务器语言 'Name', //服务器主机名 'Email', //服务器管理员邮箱 'WebEngine', //服务器WEB服务引擎 'WebPort', //web服务端口 'WebPath', //web路径 'ProbePath', //本脚本所在路径 'sTime' //服务器时间 ); public $sysInfo; //系统信息,windows和linux public $CPU_Use; public $hd = array( 't', //硬盘总量 'f', //可用 'u', //已用 'PCT', //使用率 ); public $NetWork = array( 'NetWorkName', //网卡名称 'NetOut', //出网总量 'NetInput', //入网总量 'OutSpeed', //出网速度 'InputSpeed' //入网速度 ); //网卡流量 function __construct(){ $this->S['YourIP'] = @$_SERVER['REMOTE_ADDR']; $domain = $this->OS()?$_SERVER['SERVER_ADDR']:@gethostbyname($_SERVER['SERVER_NAME']); $this->S['DomainIP'] = @get_current_user().' - '.$_SERVER['SERVER_NAME'].'('.$domain.')'; $this->S['Flag'] = empty($this->sysInfo['win_n'])?@php_uname():$this->sysInfo['win_n']; $os = explode(" ", php_uname()); $oskernel = $this->OS()?$os[2]:$os[1]; $this->S['OS'] = $os[0].'内核版本:'.$oskernel; $this->S['Language'] = getenv("HTTP_ACCEPT_LANGUAGE"); $this->S['Name'] = $this->OS()?$os[1]:$os[2]; $this->S['Email'] = $_SERVER['SERVER_ADMIN']; $this->S['WebEngine'] = $_SERVER['SERVER_SOFTWARE']; $this->S['WebPort'] = $_SERVER['SERVER_PORT']; $this->S['WebPath'] = $_SERVER['DOCUMENT_ROOT']?str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']):str_replace('\\','/',dirname(__FILE__)); $this->S['ProbePath'] = str_replace('\\','/',__FILE__)?str_replace('\\','/',__FILE__):$_SERVER['SCRIPT_FILENAME']; $this->S['sTime'] = date('Y-m-d H:i:s'); $this->sysInfo = $this->GetsysInfo(); //var_dump($this->sysInfo); $CPU1 = $this->GetCPUUse(); sleep(1); $CPU2 = $this->GetCPUUse(); $data = $this->GetCPUPercent($CPU1, $CPU2); $this->CPU_Use =$data['cpu0']['user']."%us, ".$data['cpu0']['sys']."%sy, ".$data['cpu0']['nice']."%ni, ".$data['cpu0']['idle']."%id, ".$data['cpu0']['iowait']."%wa, ".$data['cpu0']['irq']."%irq, ".$data['cpu0']['softirq']."%softirq"; if(!$this->OS()) $this->CPU_Use = '目前只支持Linux系统'; $this->hd = $this->GetDisk(); $this->NetWork = $this->GetNetWork(); } public function OS(){ return DIRECTORY_SEPARATOR=='/'?true:false; } public function GetsysInfo(){ switch (PHP_OS) { case 'Linux': $sysInfo = $this->sys_linux(); break; case 'FreeBSD': $sysInfo = $this->sys_freebsd(); break; default: # code... break; } return $sysInfo; } public function sys_linux(){ //linux系统探测 $str = @file("/proc/cpuinfo"); //获取CPU信息 if(!$str) return false; $str = implode("", $str); @preg_match_all("/model\s+name\s{0,}\:+\s{0,}([\w\s\)\@.-]+)([\r\n]+)/s", $str, $model); //CPU 名称 @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); //CPU频率 @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); //CPU缓存 @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips); // if(is_array($model[1])){ $cpunum = count($model[1]); $x1 = $cpunum>1?' ×'.$cpunum:''; $mhz[1][0] = ' | 频率:'.$mhz[1][0]; $cache[1][0] = ' | 二级缓存:'.$cache[1][0]; $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0]; $res['cpu']['num'] = $cpunum; $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1; if(is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']); if(is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']); if(is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']); if(is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("<br />", $res['cpu']['bogomips']); } //服务器运行时间 $str = @file("/proc/uptime"); if(!$str) return false; $str = explode(" ", implode("", $str)); $str = trim($str[0]); $min = $str/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days."天".$hours."小时".$min."分钟"; //内存 $str = @file("/proc/meminfo"); if(!$str) return false; $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); $resmem['memTotal'] = round($buf[1][0]/1024, 2); $resmem['memFree'] = round($buf[2][0]/1024, 2); $resmem['memBuffers'] = round($buffers[1][0]/1024, 2); $resmem['memCached'] = round($buf[3][0]/1024, 2); $resmem['memUsed'] = $resmem['memTotal']-$resmem['memFree']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealUsed'] = $resmem['memTotal'] - $resmem['memFree'] - $resmem['memCached'] - $resmem['memBuffers']; //真实内存使用 $resmem['memRealFree'] = $resmem['memTotal'] - $resmem['memRealUsed']; //真实空闲 $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; //真实内存使用率 $resmem['memCachedPercent'] = (floatval($resmem['memCached'])!=0)?round($resmem['memCached']/$resmem['memTotal']*100,2):0; //Cached内存使用率 $resmem['swapTotal'] = round($buf[4][0]/1024, 2); $resmem['swapFree'] = round($buf[5][0]/1024, 2); $resmem['swapUsed'] = round($resmem['swapTotal']-$resmem['swapFree'], 2); $resmem['swapPercent'] = (floatval($resmem['swapTotal'])!=0)?round($resmem['swapUsed']/$resmem['swapTotal']*100,2):0; $resmem = $this->formatmem($resmem); //格式化内存显示单位 $res = array_merge($res,$resmem); // LOAD AVG 系统负载 $str = @file("/proc/loadavg"); if (!$str) return false; $str = explode(" ", implode("", $str)); $str = array_chunk($str, 4); $res['loadAvg'] = implode(" ", $str[0]); return $res; } public function sys_freebsd(){ //freeBSD系统探测 $res['cpu']['num'] = do_command('sysctl','hw.ncpu'); //CPU $res['cpu']['model'] = do_command('sysctl','hw.model'); $res['loadAvg'] = do_command('sysctl','vm.loadavg'); //Load AVG 系统负载 //uptime $buf = do_command('sysctl','kern.boottime'); $buf = explode(' ', $buf); $sys_ticks = time()-intval($buf[3]); $min = $sys_ticks/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days.'天'.$hours.'小时'.$min.'分钟'; //内存 $buf = do_command('sysctl','hw.physmem'); $resmem['memTotal'] = round($buf/1024/1024, 2); $str = do_command('sysctl','vm.vmtotal'); preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\@.-]+)([\r\n]+)/s", $str, $model); //CPU 名称 @preg_match_all("/cpu\s+MHz\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $mhz); //CPU频率 @preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache); //CPU缓存 @preg_match_all("/bogomips\s{0,}\:+\s{0,}([\d\.]+)[\r\n]+/", $str, $bogomips); // if(is_array($model[1])){ $cpunum = count($model[1]); $x1 = $cpunum>1?' ×'.$cpunum:''; $mhz[1][0] = ' | 频率:'.$mhz[1][0]; $cache[1][0] = ' | 二级缓存:'.$cache[1][0]; $bogomips[1][0] = ' | Bogomips:'.$bogomips[1][0]; $res['cpu']['num'] = $cpunum; $res['cpu']['model'][] = $model[1][0].$mhz[1][0].$cache[1][0].$bogomips[1][0].$x1; if(is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("<br />", $res['cpu']['model']); if(is_array($res['cpu']['mhz'])) $res['cpu']['mhz'] = implode("<br />", $res['cpu']['mhz']); if(is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("<br />", $res['cpu']['cache']); if(is_array($res['cpu']['bogomips'])) $res['cpu']['bogomips'] = implode("<br />", $res['cpu']['bogomips']); } //服务器运行时间 $str = @file("/proc/uptime"); if(!$str) return false; $str = explode(" ", implode("", $str)); $str = trim($str[0]); $min = $str/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days."天".$hours."小时".$min."分钟"; //内存 $str = @file("/proc/meminfo"); if(!$str) return false; $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); $resmem['memTotal'] = round($buf[1][0]/1024, 2); $resmem['memFree'] = round($buf[2][0]/1024, 2); $resmem['memBuffers'] = round($buffers[1][0]/1024, 2); $resmem['memCached'] = round($buf[3][0]/1024, 2); $resmem['memUsed'] = $resmem['memTotal']-$resmem['memFree']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealUsed'] = $resmem['memTotal'] - $resmem['memFree'] - $resmem['memCached'] - $resmem['memBuffers']; //真实内存使用 $resmem['memRealFree'] = $resmem['memTotal'] - $resmem['memRealUsed']; //真实空闲 $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; //真实内存使用率 $resmem['memCachedPercent'] = (floatval($resmem['memCached'])!=0)?round($resmem['memCached']/$resmem['memTotal']*100,2):0; //Cached内存使用率 $resmem['swapTotal'] = round($buf[4][0]/1024, 2); $resmem['swapFree'] = round($buf[5][0]/1024, 2); $resmem['swapUsed'] = round($resmem['swapTotal']-$resmem['swapFree'], 2); $resmem['swapPercent'] = (floatval($resmem['swapTotal'])!=0)?round($resmem['swapUsed']/$resmem['swapTotal']*100,2):0; $resmem = $this->formatmem($resmem); //格式化内存显示单位 $res = array_merge($res,$resmem); // LOAD AVG 系统负载 $str = @file("/proc/loadavg"); if (!$str) return false; $str = explode(" ", implode("", $str)); $str = array_chunk($str, 4); $res['loadAvg'] = implode(" ", $str[0]); return $res; } public function sys_freebsd(){ //freeBSD系统探测 $res['cpu']['num'] = do_command('sysctl','hw.ncpu'); //CPU $res['cpu']['model'] = do_command('sysctl','hw.model'); $res['loadAvg'] = do_command('sysctl','vm.loadavg'); //Load AVG 系统负载 //uptime $buf = do_command('sysctl','kern.boottime'); $buf = explode(' ', $buf); $sys_ticks = time()-intval($buf[3]); $min = $sys_ticks/60; $hours = $min/60; $days = floor($hours/24); $hours = floor($hours-($days*24)); $min = floor($min-($days*60*24)-($hours*60)); $res['uptime'] = $days.'天'.$hours.'小时'.$min.'分钟'; //内存 $buf = do_command('sysctl','hw.physmem'); $resmem['memTotal'] = round($buf/1024/1024, 2); $str = do_command('sysctl','vm.vmtotal'); preg_match_all("/\nVirtual Memory[\:\s]*\(Total[\:\s]*([\d]+)K[\,\s]*Active[\:\s]*([\d]+)K\n/i", $str, $buff, PREG_SET_ORDER); preg_match_all("/\nReal Memory[\:\s]*Total[\s]∗([\d]+)K[\s]∗Active[\s]∗([\d]+)KTotal[\s]∗([\d]+)K[\s]∗Active[\s]∗([\d]+)K\n/i", $str, $buf, PREG_SET_ORDER); $resmem['memRealUsed'] = round($buf[0][2]/1024, 2); $resmem['memCached'] = round($buff[0][2]/1024, 2); $resmem['memUsed'] = round($buf[0][1]/1024, 2)+$resmem['memCached']; $resmem['memFree'] = $resmem['memTotal']-$resmem['memUsed']; $resmem['memPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memUsed']/$resmem['memTotal']*100,2):0; $resmem['memRealPercent'] = (floatval($resmem['memTotal'])!=0)?round($resmem['memRealUsed']/$resmem['memTotal']*100,2):0; $resmem = $this->formatmem($resmem); $res = array_merge($res,$resmem); return $res; } public function do_command($cName, $args){ //执行系统命令FreeBSD $cName = empty($cName)?'sysctl':timr($cName); if(empty($args)) return false; $args = '-n '.$args; $buffers = ''; $command = find_command($cName); if(!$command) return false; if($fp = @popen("$command $args", 'r')){ while (!@feof($fp)) { $buffers .= @fgets($fp, 4096); } pclose($fp); return trim($buffers); } return false; } public function find_command($cName){ //确定shell位置 $path = array('/bin', '/sbin', '/usr/bin', '/usr/sbin', '/usr/local/bin', '/usr/local/sbin'); foreach($path as $p) { if (@is_executable("$p/$commandName")) return "$p/$commandName"; } return false; } public function GetCPUUse(){ $data = @file('/proc/stat'); $cores = array(); foreach ($data as $line) { if(preg_match('/^cpu[0-9]/', $line)){ $info = explode(' ', $line); $cores[]=array('user'=>$info[1],'nice'=>$info[2],'sys' => $info[3],'idle'=>$info[4],'iowait'=>$info[5],'irq' => $info[6],'softirq' => $info[7]); } } return $cores; } public function GetCPUPercent($CPU1,$CPU2){ $num = count($CPU1); if($num!==count($CPU2)) return; $cups = array(); for ($i=0; $i < $num; $i++) { $dif = array(); $dif['user'] = $CPU2[$i]['user'] - $CPU1[$i]['user']; $dif['nice'] = $CPU2[$i]['nice'] - $CPU1[$i]['nice']; $dif['sys'] = $CPU2[$i]['sys'] - $CPU1[$i]['sys']; $dif['idle'] = $CPU2[$i]['idle'] - $CPU1[$i]['idle']; $dif['iowait'] = $CPU2[$i]['iowait'] - $CPU1[$i]['iowait']; $dif['irq'] = $CPU2[$i]['irq'] - $CPU1[$i]['irq']; $dif['softirq'] = $CPU2[$i]['softirq'] - $CPU1[$i]['softirq']; $total = array_sum($dif); $cpu = array(); foreach($dif as $x=>$y) $cpu[$x] = round($y/$total*100, 2); $cpus['cpu'.$i] = $cpu; } return $cpus; } public function GetDisk(){ //获取硬盘情况 $d['t'] = round(@disk_total_space(".")/(1024*1024*1024),3); $d['f'] = round(@disk_free_space(".")/(1024*1024*1024),3); $d['u'] = $d['t']-$d['f']; $d['PCT'] = (floatval($d['t'])!=0)?round($d['u']/$d['t']*100,2):0; return $d; } private function formatmem($mem){ //格试化内存显示单位 if(!is_array($mem)) return $mem; $tmp = array( 'memTotal', 'memUsed', 'memFree', 'memPercent', 'memCached', 'memRealPercent', 'swapTotal', 'swapUsed', 'swapFree', 'swapPercent' ); foreach ($mem as $k=>$v) { if(!strpos($k, 'Percent')){ $v = $v<1024?$v.' M':$v.' G'; } $mem[$k] = $v; } foreach ($tmp as $v) { $mem[$v] = $mem[$v]?$mem[$v]:0; } return $mem; } public function GetNetWork(){ //网卡流量 $strs = @file("/proc/net/dev"); $lines = count($strs); for ($i=2; $i < $lines; $i++) { preg_match_all( "/([^\s]+):[\s]{0,}(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/", $strs[$i], $info ); $res['OutSpeed'][$i] = $info[10][0]; $res['InputSpeed'][$i] = $info[2][0]; $res['NetOut'][$i] = $this->formatsize($info[10][0]); $res['NetInput'][$i] = $this->formatsize($info[2][0]); $res['NetWorkName'][$i] = $info[1][0]; } return $res; } public function formatsize($size) { //单位转换 $danwei=array(' B ',' K ',' M ',' G ',' T '); $allsize=array(); $i=0; for($i = 0; $i <5; $i++) { if(floor($size/pow(1024,$i))==0){break;} } for($l = $i-1; $l >=0; $l--) { $allsize1[$l]=floor($size/pow(1024,$l)); $allsize[$l]=$allsize1[$l]-$allsize1[$l+1]*1024; } $len=count($allsize); for($j = $len-1; $j >=0; $j--) { $fsize=$fsize.$allsize[$j].$danwei[$j]; } return $fsize; } public function phpexts(){ //以编译模块 $able = get_loaded_extensions(); $str = ''; foreach ($able as $key => $value) { if ($key!=0 && $key%13==0) { $str .= '<br />'; } $str .= "$value "; } return $str; } public function show($varName){ //检测PHP设置参数 switch($result = get_cfg_var($varName)){ case 0: return '<font color="red">×</font>'; break; case 1: return '<font color="green">√</font>'; break; default: return $result; break; } } public function GetDisFuns(){ $disFuns=get_cfg_var("disable_functions"); $str = ''; if(empty($disFuns)){ $str = '<font color=red>×</font>'; }else{ $disFunsarr = explode(',',$disFuns); foreach ($disFunsarr as $key=>$value) { if ($key!=0 && $key%8==0) { $str .= '<br />'; } $str .= "$value "; } } return $str; } public function isfun($funName='',$j=0){ // 检测函数支持 if (!$funName || trim($funName) == '' || preg_match('~[^a-z0-9\_]+~i', $funName, $tmp)) return '错误'; if(!$j){ return (function_exists($funName) !== false) ? '<font color="green">√</font>' : '<font color="red">×</font>'; }else{ return (function_exists($funName) !== false) ? '√' : '×'; } } public function GetGDVer(){ $strgd = '<font color="red">×</font>'; if(function_exists(gd_info)) { $gd_info = @gd_info(); $strgd = $gd_info["GD Version"]; } return $strgd; } public function GetZendInfo(){ $zendInfo = array(); $zendInfo['ver'] = zend_version()?zend_version():'<font color=red>×</font>'; $phpv = substr(PHP_VERSION,2,1); $zendInfo['loader'] = $phpv>2?'ZendGuardLoader[启用]':'Zend Optimizer'; if($phpv>2){ $zendInfo['html'] = get_cfg_var("zend_loader.enable")?'<font color=green>√</font>':'<font color=red>×</font>'; }elseif(function_exists('zend_optimizer_version')){ $zendInfo['html'] = zend_optimizer_version(); }else{ $zendInfo['html']= (get_cfg_var("zend_optimizer.optimization_level") || get_cfg_var("zend_extension_manager.optimizer_ts") || get_cfg_var("zend.ze1_compatibility_mode") || get_cfg_var("zend_extension_ts"))?'<font color=green>√</font>':'<font color=red>×</font>'; } return $zendInfo; } public function GetIconcube(){ $str = '<font color=red>×</font>'; if(extension_loaded('ionCube Loader')){ $ys = ionCube_Loader_version(); $gm = '.'.(int)substr($ys, 3, 2); $str = $ys.$gm; } return $str; } public function CHKModule($cName){ if(empty($cName)) return '错误'; $str = phpversion($cName); return empty($str)?'<font color=red>×</font>':$str; } public function GetDBVer($dbname){ if(empty($dbname)) return '错误'; switch ($dbname) { case 'mysql': if(function_exists("mysql_get_server_info")){ $s = @mysql_get_server_info(); $s = $s ? ' mysql_server 版本:'.$s:''; $c = @mysql_get_client_info(); $c = $c ? ' mysql_client 版本:'.$c:''; return $s.$c; } return ''; break; case 'sqlite': if(extension_loaded('sqlite3')){ $sqliteVer = SQLite3::version(); $str = '<font color=green>√</font>'; $str .= 'SQLite3 Ver'.$sqliteVer['versionString']; }else{ $str = $this->isfun('sqlite_close'); if(strpos($str, '√')!==false){ $str .= ' 版本:'.sqlite_libversion(); } } return $str; break; default: return ''; break; } } }$title = 'PHP服务器信息探针';$j_version = '1.0.0';$S = new ServerInfo();$phpSelf = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];$disFuns=get_cfg_var("disable_functions");$disFuns = strpos('phpinfo', needle)?'<font color="red">×</font>':"<a href='$phpSelf?act=phpinfo' target='_blank'>PHPINFO</a>";$strcookies = isset($_COOKIE)?'<font color="green">√</font>' : '<font color="red">×</font>';$strsmtp = get_cfg_var("SMTP")?'<font color="green">√</font>' : '<font color="red">×</font>';$smtpadd = get_cfg_var("SMTP")?get_cfg_var("SMTP"):'<font color="red">×</font>';//ajax调用实时刷新if ($_GET['act'] == "rt"){ $arr=array('useSpace'=>$S->hd['u'], 'freeSpace'=>$S->hd['f'], 'hdPercent'=>$S->hd['PCT'], 'barhdPercent'=>$S->hd['PCT'].'%', 'TotalMemory'=>$S->sysInfo['memTotal'], 'UsedMemory'=>$S->sysInfo['memUsed'], 'FreeMemory'=>$S->sysInfo['memFree'], 'CachedMemory'=>$S->sysInfo['memCached'], 'Buffers'=>$S->sysInfo['memBuffers'], 'TotalSwap'=>$S->sysInfo['swapTotal'], 'swapUsed'=>$S->sysInfo['swapUsed'], 'swapFree'=>$S->sysInfo['swapFree'], 'loadAvg'=>$S->sysInfo['loadAvg'], 'uptime'=>$S->sysInfo['uptime'], 'freetime'=>"$freetime", 'bjtime'=>"$bjtime", 'stime'=>$S->S['sTime'], 'cpuuse'=>$S->CPU_Use, 'memRealPercent'=>$S->sysInfo['memRealPercent'], 'memRealUsed'=>$S->sysInfo['memRealUsed'], 'memRealFree'=>$S->sysInfo['memRealFree'], 'memPercent'=>$S->sysInfo['memPercent'].'%', 'memCachedPercent'=>$S->sysInfo['memCachedPercent'], 'barmemCachedPercent'=>$S->sysInfo['memCachedPercent'].'%', 'swapPercent'=>$S->sysInfo['swapPercent'], 'barmemRealPercent'=>$S->sysInfo['memRealPercent'].'%', 'barswapPercent'=>$S->sysInfo['swapPercent'].'%', 'NetOut2'=>$S->NetWork['NetOut'][2], 'NetOut3'=>$S->NetWork['NetOut'][3], 'NetOut4'=>$S->NetWork['NetOut'][4], 'NetOut5'=>$S->NetWork['NetOut'][5], 'NetOut6'=>$S->NetWork['NetOut'][6], 'NetOut7'=>$S->NetWork['NetOut'][7], 'NetOut8'=>$S->NetWork['NetOut'][8], 'NetOut9'=>$S->NetWork['NetOut'][9], 'NetOut10'=>$S->NetWork['NetOut'][10], 'NetInput2'=>$S->NetWork['NetInput'][2], 'NetInput3'=>$S->NetWork['NetInput'][3], 'NetInput4'=>$S->NetWork['NetInput'][4], 'NetInput5'=>$S->NetWork['NetInput'][5], 'NetInput6'=>$S->NetWork['NetInput'][6], 'NetInput7'=>$S->NetWork['NetInput'][7], 'NetInput8'=>$S->NetWork['NetInput'][8], 'NetInput9'=>$S->NetWork['NetInput'][9], 'NetInput10'=>$S->NetWork['NetInput'][10], 'NetOutSpeed2'=>$S->NetWork['OutSpeed'][2], 'NetOutSpeed3'=>$S->NetWork['OutSpeed'][3], 'NetOutSpeed4'=>$S->NetWork['OutSpeed'][4], 'NetOutSpeed5'=>$S->NetWork['OutSpeed'][5], 'NetInputSpeed2'=>$S->NetWork['InputSpeed'][2], 'NetInputSpeed3'=>$S->NetWork['InputSpeed'][3], 'NetInputSpeed4'=>$S->NetWork['InputSpeed'][4], 'NetInputSpeed5'=>$S->NetWork['InputSpeed'][5] ); $jarr=json_encode($arr); $_GET['callback'] = htmlspecialchars($_GET['callback']); echo $_GET['callback'],'(',$jarr,')'; exit; }function memory_usage() { $memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB'; return $memory; }// 计时function microtime_float() { $mtime = microtime(); $mtime = explode(' ', $mtime); return $mtime[1] + $mtime[0]; }?><!DOCTYPE html><html><head><title><?=$title?></title><meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><style type="text/css"><!--* {font-family: "Microsoft Yahei",Tahoma, Arial; }body{text-align: center; margin: 0 auto; padding: 0; background-color:#fafafa;font-size:12px;font-family:Tahoma, Arial}h1 {font-size: 26px; padding: 0; margin: 0; color: #333333; font-family: "Lucida Sans Unicode","Lucida Grande",sans-serif;}h1 small {font-size: 11px; font-family: Tahoma; font-weight: bold; }a{color: #666; text-decoration:none;}a.black{color: #000000; text-decoration:none;}.w_logo{height:25px;text-align:center;color:#333;font-size: 15px; width:13%; }.j_top{display:table;font-weight:bold;background:#dedede;color:#626262;width: 100%;text-align: left; height: 25px; line-height: 25px;box-shadow: 1px 1px 1px #CCC;-moz-box-shadow: 1px 1px 1px #CCC;-webkit-box-shadow: 1px 1px 1px #CCC;-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=2, Direction=135, Color='#CCCCCC')";}.j_top a{text-align:center; width:8.7%; display: table-cell; padding: 5px 0px;}.j_top a:hover{background:#dadada;}.con{width: 90%;margin: 10px auto;}.con .j_top{ padding: 0px 10px;}.j_tb{display:table;width:100%;padding:5px 10px;border-bottom:1px solid #CCCCCC;text-align:left;}.j_td{display:table-cell;}.j_td_t{width:120px;}.j_td_c{width:50%;}.j_td_t1{width:320px;}.w_foot{height:25px;text-align:center; background:#dedede;}input{padding: 2px; background: #FFFFFF; border-top:1px solid #666666; border-left:1px solid #666666; border-right:1px solid #CCCCCC; border-bottom:1px solid #CCCCCC; font-size:12px}input.btn{font-weight: bold; height: 20px; line-height: 20px; padding: 0 6px; color:#666666; background: #f2f2f2; border:1px solid #999;font-size:12px}.bar {border:1px solid #999999; background:#FFFFFF; height:5px; font-size:2px; width:89%; margin:2px 0 5px 0;padding:1px; overflow: hidden;}.bar_1 {border:1px dotted #999999; background:#FFFFFF; height:5px; font-size:2px; width:89%; margin:2px 0 5px 0;padding:1px; overflow: hidden;}.barli_red{background:#ff6600; height:5px; margin:0px; padding:0;}.barli_blue{background:#0099FF; height:5px; margin:0px; padding:0;}.barli_green{background:#36b52a; height:5px; margin:0px; padding:0;}.barli_black{background:#333; height:5px; margin:0px; padding:0;}.barli_1{background:#999999; height:5px; margin:0px; padding:0;}.barli{background:#36b52a; height:5px; margin:0px; padding:0;}#page {width: 100%; padding: 0 auto; margin: 0 auto; text-align: left;}#header{position:relative; padding:5px;}--></style><script language="JavaScript" type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.7/jquery.min.js"></script><script type="text/javascript">$(document).ready(function(){getJSONData();});var OutSpeed2=<?=floor($S->NetWork['OutSpeed'][2]);?>;var OutSpeed3=<?=floor($S->NetWork['OutSpeed'][3]);?>;var OutSpeed4=<?=floor($S->NetWork['OutSpeed'][4]);?>;var OutSpeed5=<?=floor($S->NetWork['OutSpeed'][5]);?>;var InputSpeed2=<?=floor($S->NetWork['InputSpeed'][2]);?>;var InputSpeed3=<?=floor($S->NetWork['InputSpeed'][3]);?>;var InputSpeed4=<?=floor($S->NetWork['InputSpeed'][4]);?>;var InputSpeed5=<?=floor($S->NetWork['InputSpeed'][5]);?>;function getJSONData(){ setTimeout("getJSONData()", 1000); $.getJSON('?act=rt&callback=?', displayData); }function ForDight(Dight,How){ if (Dight<0){ var Last=0+"B/s"; }else if (Dight<1024){ var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"B/s"; }else if (Dight<1048576){ Dight=Dight/1024; var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"K/s"; }else{ Dight=Dight/1048576; var Last=Math.round(Dight*Math.pow(10,How))/Math.pow(10,How)+"M/s"; } return Last; }function displayData(dataJSON){ $("#useSpace").html(dataJSON.useSpace); $("#freeSpace").html(dataJSON.freeSpace); $("#hdPercent").html(dataJSON.hdPercent); $("#barhdPercent").width(dataJSON.barhdPercent); $("#TotalMemory").html(dataJSON.TotalMemory); $("#UsedMemory").html(dataJSON.UsedMemory); $("#FreeMemory").html(dataJSON.FreeMemory); $("#CachedMemory").html(dataJSON.CachedMemory); $("#Buffers").html(dataJSON.Buffers); $("#TotalSwap").html(dataJSON.TotalSwap); $("#swapUsed").html(dataJSON.swapUsed); $("#swapFree").html(dataJSON.swapFree); $("#swapPercent").html(dataJSON.swapPercent); $("#loadAvg").html(dataJSON.loadAvg); $("#uptime").html(dataJSON.uptime); $("#freetime").html(dataJSON.freetime); $("#stime").html(dataJSON.stime); $("#bjtime").html(dataJSON.bjtime); $("#cpuuse").html(dataJSON.cpuuse); $("#memRealUsed").html(dataJSON.memRealUsed); $("#memRealFree").html(dataJSON.memRealFree); $("#memRealPercent").html(dataJSON.memRealPercent); $("#memPercent").html(dataJSON.memPercent); $("#barmemPercent").width(dataJSON.memPercent); $("#barmemRealPercent").width(dataJSON.barmemRealPercent); $("#memCachedPercent").html(dataJSON.memCachedPercent); $("#barmemCachedPercent").width(dataJSON.barmemCachedPercent); $("#barswapPercent").width(dataJSON.barswapPercent); $("#NetOut2").html(dataJSON.NetOut2); $("#NetOut3").html(dataJSON.NetOut3); $("#NetOut4").html(dataJSON.NetOut4); $("#NetOut5").html(dataJSON.NetOut5); $("#NetOut6").html(dataJSON.NetOut6); $("#NetOut7").html(dataJSON.NetOut7); $("#NetOut8").html(dataJSON.NetOut8); $("#NetOut9").html(dataJSON.NetOut9); $("#NetOut10").html(dataJSON.NetOut10); $("#NetInput2").html(dataJSON.NetInput2); $("#NetInput3").html(dataJSON.NetInput3); $("#NetInput4").html(dataJSON.NetInput4); $("#NetInput5").html(dataJSON.NetInput5); $("#NetInput6").html(dataJSON.NetInput6); $("#NetInput7").html(dataJSON.NetInput7); $("#NetInput8").html(dataJSON.NetInput8); $("#NetInput9").html(dataJSON.NetInput9); $("#NetInput10").html(dataJSON.NetInput10); $("#NetOutSpeed2").html(ForDight((dataJSON.NetOutSpeed2-OutSpeed2),3)); OutSpeed2=dataJSON.NetOutSpeed2; $("#NetOutSpeed3").html(ForDight((dataJSON.NetOutSpeed3-OutSpeed3),3)); OutSpeed3=dataJSON.NetOutSpeed3; $("#NetOutSpeed4").html(ForDight((dataJSON.NetOutSpeed4-OutSpeed4),3)); OutSpeed4=dataJSON.NetOutSpeed4; $("#NetOutSpeed5").html(ForDight((dataJSON.NetOutSpeed5-OutSpeed5),3)); OutSpeed5=dataJSON.NetOutSpeed5; $("#NetInputSpeed2").html(ForDight((dataJSON.NetInputSpeed2-InputSpeed2),3)); InputSpeed2=dataJSON.NetInputSpeed2; $("#NetInputSpeed3").html(ForDight((dataJSON.NetInputSpeed3-InputSpeed3),3)); InputSpeed3=dataJSON.NetInputSpeed3; $("#NetInputSpeed4").html(ForDight((dataJSON.NetInputSpeed4-InputSpeed4),3)); InputSpeed4=dataJSON.NetInputSpeed4; $("#NetInputSpeed5").html(ForDight((dataJSON.NetInputSpeed5-InputSpeed5),3)); InputSpeed5=dataJSON.NetInputSpeed5; }</script></head><body><a name="j_top"></a><p id="page"> <p class="j_top"><a href="#j_php">PHP参数</a> <a href="#j_module">组件支持</a> <a href="#j_module_other">第三方组件</a> <a href="#j_db">数据库支持</a> <a href="#j_performance">性能检测</a> <a href="#j_networkspeed">网速检测</a> <a href="#j_MySQL">MySQL检测</a> <a href="#j_function">函数检测</a> <a href="#j_mail">邮件检测</a> </p> <!--Server info--> <p class="con"> <p class="j_top">服务器参数</p> <p class="j_tb"><label class="j_td j_td_t">服务器域名/IP地址</label><label><?=$S->S['DomainIP'];?></label></p> <p class="j_tb"><label class="j_td j_td_t">服务器标识</label><label><?=$S->S['Flag'];?></label></p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器操作系统</label><label class="j_td"><?=$S->S['OS'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器解译引擎</label><label class="j_td"><?=$S->S['WebEngine'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器语言</label><label class="j_td"><?=$S->S['Language'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器端口</label><label class="j_td"><?=$S->S['WebPort'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器主机名</label><label class="j_td"><?=$S->S['Name'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">绝对路径</label><label class="j_td"><?=$S->S['WebPath'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">管理员邮箱</label><label class="j_td"><?=$S->S['Email'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">探针路径</label><label class="j_td"><?=$S->S['ProbePath'];?></label></p> </p> </p> <!--Server Real-Time--> <p class="con"> <p class="j_top">服务器实时数据</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器当前时间</label><label class="j_td" id="stime"><?=$S->S['sTime'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t">服务器已运行时间</label><label class="j_td" id="uptime"><?=$S->sysInfo['uptime'];?></label></p> </p> <p class="j_tb"><label class="j_td j_td_t">CPU型号[<?=$S->sysInfo['cpu']['num'];?>核]</label><label><?=$S->sysInfo['cpu']['model'];?></label></p> <p class="j_tb"><label class="j_td j_td_t">CPU使用情况</label><label id="cpuuse"><?=$S->CPU_Use;?></label></p> <p class="j_tb"><label class="j_td j_td_t">硬盘使用状况</label> <label>总空间 <?=$S->hd['t'];?> G,已用 <font color='#333333'><span id="useSpace"><?=$S->hd['u'];?></span></font> G, 空闲 <font color='#333333'><span id="freeSpace"><?=$S->hd['f'];?></span></font> G, 使用率 <span id="hdPercent"><?=$S->hd['PCT'];?></span>% <p class="bar"><p id="barhdPercent" class="barli_black" style="width:<?=$S->hd['PCT']?>%" > </p> </p> </label> </p> <p class="j_tb"><label class="j_td j_td_t">内存使用状况</label> <label class="j_td">物理内存:共<font color='#CC0000'><?=$S->sysInfo['memTotal'];?> </font> , 已用<font color='#CC0000'><span id="UsedMemory"><?=$S->sysInfo['memUsed']?></span></font> , 空闲<font color='#CC0000'><span id="FreeMemory"><?=$S->sysInfo['memFree'];?></span></font> , 使用率<span id="memPercent"><?=$S->sysInfo['memPercent'];?></span> <p class="bar"><p id="barmemPercent" class="barli_red" style="width:<?=$S->sysInfo['memPercent'];?>%" > </p></p> <?php if($S->sysInfo['memCached']){ ?> Cache化内存为 <span id="CachedMemory"><?=$S->sysInfo['memCached'];?></span> , 使用率<span id="memCachedPercent"><?=$S->sysInfo['memCachedPercent'];?></span>% | Buffers缓冲为 <span id="Buffers"><?=$S->sysInfo['memBuffers'];?></span> <p class="bar"><p id="barmemCachedPercent" class="barli_blue" style="width:<?=$S->sysInfo['memCachedPercent'];?>%" > </p></p> 真实内存使用<span id="memRealUsed"><?=$S->sysInfo['memRealUsed'];?></span> , 真实内存空闲<span id="memRealFree"><?=$S->sysInfo['memRealFree'];?></span> , 使用率<span id="memRealPercent"><?=$S->sysInfo['memRealPercent'];?></span>% <p class="bar_1"><p id="barmemRealPercent" class="barli_1" style="width:<?=$S->sysInfo['memRealPercent'];?>%" > </p></p> <?php } ?> <?php if($S->sysInfo['swapTotal']){ ?> SWAP区:共<?=$S->sysInfo['swapTotal'];?> , 已使用<span id="swapUsed"><?=$S->sysInfo['swapUsed'];?></span> , 空闲<span id="swapFree"><?=$S->sysInfo['swapFree'];?></span> , 使用率<span id="swapPercent"><?=$S->sysInfo['swapPercent'];?></span>% <p class="bar"><p id="barswapPercent" class="barli_red" style="width:<?=$S->sysInfo['swapPercent'];?>%" > </p> </p> <?php } ?> </label> </p> <p class="j_tb"><label class="j_td j_td_t">系统平均负载</label><label class="j_td"><?=$S->sysInfo['loadAvg']?></label></p> </p> <!--net work--> <p class="con"> <p class="j_top">网络使用状况</p> <?php $netnum = count($S->NetWork); for ($i=2; $i < $netnum; $i++) { ?> <p class="j_tb"> <label class="j_td" style="width:13%"><?=$S->NetWork['NetWorkName'][$i]?></label> <label class="j_td" style="width:29%">入网:<font color='#CC0000'><span id="NetInput<?=$i;?>"><?=$S->NetWork['NetInput'][$i];?></span></font></label> <label class="j_td" style="width:14%">实时:<font color='#CC0000'><span id="NetInputSpeed<?=$i;?>">0B/s</span></font></label> <label class="j_td" style="width:29%">出网: <font color='#CC0000'><span id="NetOut<?=$i?>"><?=$S->NetWork['NetOut'][$i];?></span></font></label> <label class="j_td" style="width:14%">实时: <font color='#CC0000'><span id="NetOutSpeed<?=$i?>">0B/s</span></font></label> </p> <?php } ?> </p> <!--enbale module--> <p class="con"> <p class="j_top">PHP已编译模块检测</p> <p class="j_tb"><label class="j_td j_td_t"><?=$S->phpexts();?></label></p> </p> <!--enbale module--> <a name="j_php"></a> <p class="con"> <p class="j_top">PHP相关参数</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP信息(phpinfo):</label><label class="j_td"><?=$disFuns;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP版本(php_version):</label><label class="j_td"><?=PHP_VERSION;?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP运行方式:</label><label class="j_td"><?=strtoupper(php_sapi_name());?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">脚本占用最大内存(memory_limit):</label><label class="j_td"><?=$S::show("memory_limit");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP安全模式(safe_mode):</label><label class="j_td"><?=$S::show("safe_mode");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">POST方法提交最大限制(post_max_size):</label><label class="j_td"><?=$S::show("post_max_size");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">上传文件最大限制(upload_max_filesize):</label><label class="j_td"><?=$S::show("upload_max_filesize");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">浮点型数据显示的有效位数(precision):</label><label class="j_td"><?=$S::show("precision");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">脚本超时时间(max_execution_time):</label><label class="j_td"><?=$S::show("max_execution_time");?>秒</label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">socket超时时间(default_socket_timeout):</label><label class="j_td"><?=$S::show("default_socket_timeout");?>秒</label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PHP页面根目录(doc_root):</label><label class="j_td"><?=$S::show("doc_root");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">用户根目录(user_dir):</label><label class="j_td"><?=$S::show("user_dir");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">dl()函数(enable_dl):</label><label class="j_td"><?=$S::show("enable_dl");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">指定包含文件目录(include_path):</label><label class="j_td"><?=$S::show("include_path");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">显示错误信息(display_errors):</label><label class="j_td"><?=$S::show("display_errors");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">自定义全局变量(register_globals):</label><label class="j_td"><?=$S::show("register_globals");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">数据反斜杠转义(magic_quotes_gpc):</label><label class="j_td"><?=$S::show("magic_quotes_gpc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">"<?...?>"短标签(short_open_tag):</label><label class="j_td"><?=$S::show("short_open_tag");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">"<% %>"ASP风格标记(asp_tags):</label><label class="j_td"><?=$S::show("asp_tags");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">忽略重复错误信息(ignore_repeated_errors):</label><label class="j_td"><?=$S::show("ignore_repeated_errors");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">忽略重复的错误源(ignore_repeated_source):</label><label class="j_td"><?=$S::show("ignore_repeated_source");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">报告内存泄漏(report_memleaks):</label><label class="j_td"><?=$S::show("report_memleaks");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">自动字符串转义(magic_quotes_gpc):</label><label class="j_td"><?=$S::show("magic_quotes_gpc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">外部字符串自动转义(magic_quotes_runtime):</label><label class="j_td"><?=$S::show("magic_quotes_runtime");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">打开远程文件(allow_url_fopen):</label><label class="j_td"><?=$S::show("allow_url_fopen");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">声明argv和argc变量(register_argc_argv):</label><label class="j_td"><?=$S::show("register_argc_argv");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Cookie 支持:</label><label class="j_td"><?=$strcookies;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">拼写检查(ASpell Library):</label><label class="j_td"><?=$S::isfun("aspell_check_raw");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">高精度数学运算(BCMath):</label><label class="j_td"><?=$S::isfun("bcadd");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PREL相容语法(PCRE):</label><label class="j_td"><?=$S::isfun("preg_match");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">PDF文档支持:</label><label class="j_td"><?=$S::isfun("pdf_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SNMP网络管理协议:</label><label class="j_td"><?=$S::isfun("snmpget");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">VMailMgr邮件处理:</label><label class="j_td"><?=$S::isfun("vm_adduser");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Curl支持:</label><label class="j_td"><?=$S::isfun("curl_init");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SMTP支持:</label><label class="j_td"><?=$strsmtp;?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SMTP地址:</label><label class="j_td"><?=$smtpadd;?></label></p> </p> <p class="j_tb"> <label class="j_td j_td_t1">默认支持函数(enable_functions):</label><label class="j_td"><a href='<?=$phpSelf;?>?act=Function' target='_blank' class='static'>请点这里查看详细!</a></label> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">被禁用的函数(disable_functions):</label><label class="j_td"><?=$S::GetDisFuns();?></label></p> </p> </p> <!--组件支持--> <a name="j_module"></a> <p class="con"> <p class="j_top">组件支持</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">FTP支持:</label><label class="j_td"><?=$S::isfun("ftp_login");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">XML解析支持:</label><label class="j_td"><?=$S::isfun("xml_set_object");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Session支持:</label><label class="j_td"><?=$S::isfun("session_start");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Socket支持:</label><label class="j_td"><?=$S::isfun("socket_accept");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Calendar支持</label><label class="j_td"><?=$S::isfun('cal_days_in_month');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">允许URL打开文件:</label><label class="j_td"><?=$S::show("allow_url_fopen");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">GD库支持:</label><label class="j_td"><?=$S::GetGDVer();?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">压缩文件支持(Zlib):</label><label class="j_td"><?=$S::isfun("gzclose");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">IMAP电子邮件系统函数库:</label><label class="j_td"><?=$S::isfun("imap_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">历法运算函数库:</label><label class="j_td"><?=$S::isfun("JDToGregorian");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">正则表达式函数库:</label><label class="j_td"><?=$S::isfun("preg_match");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">WDDX支持:</label><label class="j_td"><?=$S::isfun("wddx_add_vars");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Iconv编码转换:</label><label class="j_td"><?=$S::isfun("iconv");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">mbstring:</label><label class="j_td"><?=$S::isfun("mb_eregi");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">高精度数学运算:</label><label class="j_td"><?=$S::isfun("bcadd");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">LDAP目录协议:</label><label class="j_td"><?=$S::isfun("ldap_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">MCrypt加密处理:</label><label class="j_td"><?=$S::isfun("mcrypt_cbc");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">哈稀计算:</label><label class="j_td"><?=$S::isfun("mhash_count");?></label></p> </p> </p> <a name="j_module_other"></a> <!--第三方组件信息--> <p class="con"> <p class="j_top">第三方组件</p> <p class="j_tb"><?$zendInfo = $S::GetZendInfo();?> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Zend版本</label><label class="j_td"><?=$zendInfo['ver'];?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1"><?=$zendInfo['loader']?></label><label class="j_td"><?=$zendInfo['html'];?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">eAccelerator</label><label class="j_td"><?=$S->CHKModule('eAccelerator');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">ioncube</label><label class="j_td"><?=$S->GetIconcube();?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">XCache</label><label class="j_td"><?=$S->CHKModule('XCache');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">APC</label><label class="j_td"><?=$S->CHKModule('APC');?></label></p> </p> </p> <a name="w_db"></a> <!--db--> <p class="con"> <p class="j_top">数据库支持</p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">MySQL 数据库:</label><label class="j_td"><?=$S::isfun('mysql_close').$S::GetDBVer('mysql');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">ODBC 数据库:</label><label class="j_td"><?=$S::isfun("odbc_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Oracle 数据库:</label><label class="j_td"><?=$S::isfun("ora_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SQL Server 数据库:</label><label class="j_td"><?$S::isfun("mssql_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">dBASE 数据库:</label><label class="j_td"><?=$S::isfun("dbase_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">mSQL 数据库:</label><label class="j_td"><?=$S::isfun("msql_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SQLite 数据库:</label><label class="j_td"><?=$S->GetDBVer('sqlite');?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Hyperwave 数据库:</label><label class="j_td"><?=$S::isfun("hw_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Postgre SQL 数据库:</label><label class="j_td"><?=$S::isfun("pg_close"); ?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">Informix 数据库:</label><label class="j_td"><?=$S::isfun("ifx_close");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">DBA 数据库:</label><label class="j_td"><?=$S::isfun("dba_close");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">DBM 数据库:</label><label class="j_td"><?=$S::isfun("dbmclose");?></label></p> </p> <p class="j_tb"> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">FilePro 数据库:</label><label class="j_td"><?=$S::isfun("filepro_fieldcount");?></label></p> <p class="j_td" style="width: 50%"><label class="j_td j_td_t1">SyBase 数据库:</label><label class="j_td"><?=$S::isfun("sybase_close");?></label></p> </p> </p> <p class="con"> <p align="center"><?php $run_time = sprintf('%0.4f', microtime_float() - $time_start);?>Processed in <?php echo $run_time?> seconds. <?php echo memory_usage();?> memory usage.</p> </p></p></body></html>
相关推荐:
以上就是PHP服务器探针的实现代码的详细内容,更多请关注其它相关文章!