-
-
/*
- @系統參數偵測 LINUX
- @編輯 bbs.it-home。 org
- @date 2013/5/8
- */
- function sys_linux()
- {
- // CPU
- if (false === ($str = @file(“ /proc/cpuinfo”))) return false;
- $str = implode(“”, $str);
- @preg_match_all(“/models+names{0,}:+s{0,}([ ws)(.]+)[rn]+/”, $str, $model);
- //@preg_match_all(“/cpus+MHzs{0,}:+s{0,}([d.] +)[rn]+/”, $str, $mhz);
- @preg_match_all(“/caches+sizes{0,}:+s{0,}([d.]+s{0,}[ A-Z]+[rn]+)/”, $str, $cache);
- if (false !== is_array($model[1]))
- {
- $res['cpu'] ['num'] = sizeof($model[1]);
- for($i = 0; $i {
- $res['cpu']['detail'][] = “類型:”.$model[1][$i].” 快取:”.$cache[1][$i];
- }
- if (false !== is_array($res['cpu']['detail'])) $res['cpu'] ['detail'] = implode(”
- “, $res[' cpu']['detail']);
- }
// 正常運作時間
- if (false === ($str = @file(“/proc/uptime ”))) return false;
- $str =explode(” “, implode(“”, $str));
- $ str = trim($str[0]);
- $min = $ str / 60;
- $hours = $min / 60;
- $days = 樓層($hours / 24);
- $小時= 下限($小時– ($天數* 24));
- $小時= 下限($小時– ($天數* 24));
- $min = 下限($min – ($天數* 60 * 24) – ($小時* 60));
- if ($天!== 0) $res['uptime'] = $days.“天”;
- if ($hours !== 0) $res['uptime'] .= $hours.“小時”;
- $res['uptime'] .= $min.”分鐘”;
// MEMORY
- if (false === ($str = @file(“ /proc/meminfo”))) return false;
- $str = implode(“ ”, $str);
- preg_match_all(“/MemTotals{0,}:+s{0,}([d.] +).+?MemFrees{0,}:+s{0,}([d .]+).+?SwapTotals{0,}:+s{0,}([d.]+).+?SwapFrees {0,}:+s{0,}([d.]+)/s ”, $str, $buf);
$res['memTotal'] = round ($buf[1][0]/1024, 2);
- $res[' memFree'] = round($buf[2][0]/1024, 2);
- $res['memUsed '] = ($res['memTotal']-$res['memFree']);
- $res['memPercent'] = (floatval($res['memTotal'])!=0)?round( ($res['memUsed']/$res['memTotal'])*90,2) :0;
$res['swapTotal'] = round($buf[ 3][0]/1024, 2);
- $res['swapFree'] = round( $buf[4][0]/1024, 2);
- $res['swapUsed'] = ( $res['swapTotal']-$res['swapFree']);
- $res[' swapPercent'] = (floatval($res['swapTotal'])!=0)?round(($res[ 'swapUsed']/$res['swapTotal'])*90,2):0;
// 載入平均值
- if (false === ($str = @file(“/proc/loadavg”))) return false;
- $str =explode(“” , implode(“”, $str));
- $str = array_chunk($str, 3);
- $res['loadAvg'] = implode(” “, $str[0]); p>
回傳$res;
- }
- /*
- 系統參數偵測FreeBSD
- */
- function sys_freebsd()
- {
- //CPU
- if (false === ($res['cpu']['num'] = get_key(“hw.ncpu”))) return false;
- $res['cpu']['detail' ] = get_key(“hw.model”);
//載入平均值
- if (false === ($res['loadAvg'] = get_key(“vm.loadavg ”))) return false;
- $res['loadAvg'] = str_replace(“{ “, “”, $res['loadAvg']);
- $res['loadAvg'] = str_replace(“ }”, “”, $res['loadAvg']);
//UPTIME
- if (false === ($buf = get_key(“kern.boottime”)) ) return false;
- $buf =explode(' ', $buf);
- $sys_ticks = time() – intval($buf[3]);
- $min = $sys_ticks / 60;
- $hours = $min / 60;
- $days = Floor($hours / 24);
- $hours = 下限($hours – ($days * 24));
- $min = 下限($min – ($days * 60 * 24) – ($hours * 60)) ;
- if ($days !== 0) $res['uptime'] = $days.」天」;
- if ($hours !== 0) $res['uptime'] .= $小時。 ”小時”;
- $res['uptime'] .= $min.“分鐘”;
//MEMORY
- if (false === ( $buf = get_key (“hw.physmem”))) return false;
- $res['memTotal'] = round($buf/1024/1024, 2);
- $buf =explode(“n” , do_command(“ vmstat”, “”));
- $buf =explode(” “, trim($buf[2]));
$res['memFree '] = round($ buf[5]/1024, 2);
- $res['memUsed'] = ($res['memTotal']-$res['memFree']);
- $res ['memPercent'] = (floatval($res['memTotal'])!=0)?round(($res['memUsed']/$res['memTotal'])*90,2):0;< ;/p>
$buf =explode(“n”, do_command(“swapinfo”, “-k”));
- $buf = $buf[1];
- preg_match_all( “/([0-9 ]+)s+([0-9]+)s+([0-9]+)/”, $buf, $bufArr);
- $res['swapTotal'] = round ($bufArr[1][ 0]/1024, 2);
- $res['swapUsed'] = round($bufArr[2][0]/1024, 2);
- $res['swapFree '] = round($bufArr [3][0]/1024, 2);
- $res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round(($ res['swapUsed']/ $res['swapTotal'])*90,2):0;
回傳$res;}
/*
- 獲取參數值FreeBSD
- */
- function get_key($keyName)
- {
- return do_command('sysctl', “ -n $keyName”);
- }
/*
- 決定執行檔位置FreeBSD
- */
- function find_command($commandName)
- {
- $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;
- }
/*
- 執行系統指令FreeBSD
- */
- function do_command($commandName, $args)
- {
- $buffer = 「 ”;
- if (false === ($command = find_command($commandName))) return false;
- if ($fp = @popen(“$command $args”, ' r'))
- {
- while (!@feof($fp))
- {
- $buffer .= @fgets($fp, 4096);
- }
- 返回修剪($buffer);
- }
- return false;
- }
- ?>
-
複製程式碼
說明:
記憶體用此函數可搞定:memory_get_usage()
在Windows下面只能讀取cmd命令運行的結果。
例如:
-
-
$a = system('mem');
- echo $a.」
- 「;
- //或
- $a = system('mem');
- echo $a.」
- 「;
- ?>
複製程式碼
|