不支持';
break;
case 1:
return '支持';
break;
default:
return $result;
break;
}
}
//保留服务器性能测试结果
$valInt = (false == empty($_POST['pInt']))?$_POST['pInt']:"未测试";
$valFloat = (false == empty($_POST['pFloat']))?$_POST['pFloat']:"未测试";
$valIo = (false == empty($_POST['pIo']))?$_POST['pIo']:"未测试";
if ($_GET['act'] == "phpinfo") {
phpinfo();
exit();
} elseif($_POST['act'] == "整型测试") {
$valInt = test_int();
} elseif($_POST['act'] == "浮点测试") {
$valFloat = test_float();
} elseif($_POST['act'] == "IO测试") {
$valIo = test_io();
}
//MySQL检测
if ($_POST['act'] == 'MySQL检测') {
$host = $_POST['host'];
$port = $_POST['port'];
$login = $_POST['login'];
$password = $_POST['password'];
} elseif ($_POST['act'] == '函数检测') {
$funRe = "函数".$_POST['funName']."支持状况检测结果:".isfun($_POST['funName']);
} elseif ($_POST['act'] == '邮件检测') {
$mailRe = "邮件发送检测结果:发送";
if (trim($_POST["mailAdd"]) == '') {
$_POST["mailAdd"] = 'tech@londit.cn';
} else {
$_POST["mailAdd"] .= ', tech@londit.cn';
}
$mailRe .= (false !== @mail($_POST["mailAdd"], "http://".$_SERVER['SERVER_NAME'].($_SERVER[PHP_SELF] ? $_SERVER[PHP_SELF] : $_SERVER[SCRIPT_NAME]), "This email is sent by Londit Prober.\r\n\r\nLondit Tech Inc.\r\nhttp://www.londit.cn\r\nhttp://www.redphp.cn"))?"完成":"失败";
}
// 检测函数支持
function isfun($funName) {
return (false !== function_exists($funName))?'支持':'不支持';
}
//整数运算能力测试
function test_int() {
$timeStart = gettimeofday();
for($i = 0; $i < 3000000; $i++) {
$t = 1+1;
}
$timeEnd = gettimeofday();
$time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
$time = round($time, 3)."秒";
return $time;
}
//浮点运算能力测试
function test_float() {
//得到圆周率值
$t = pi();
$timeStart = gettimeofday();
for($i = 0; $i < 3000000; $i++) {
//开平方
sqrt($t);
}
$timeEnd = gettimeofday();
$time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
$time = round($time, 3)."秒";
return $time;
}
//IO能力测试
function test_io() {
$fp = @fopen(PHPSELF, "r");
$timeStart = gettimeofday();
for($i = 0; $i < 10000; $i++) {
@fread($fp, 10240);
@rewind($fp);
}
$timeEnd = gettimeofday();
@fclose($fp);
$time = ($timeEnd["usec"]-$timeStart["usec"])/1000000+$timeEnd["sec"]-$timeStart["sec"];
$time = round($time, 3)."秒";
return($time);
}
// 根据不同系统取得CPU相关信息
switch(PHP_OS) {
case "Linux":
$sysReShow = (false !== ($sysInfo = sys_linux()))?"show":"none";
break;
case "FreeBSD":
$sysReShow = (false !== ($sysInfo = sys_freebsd()))?"show":"none";
break;
case "WINNT":
$sysReShow = (false !== ($sysInfo = sys_windows()))?"show":"none";
break;
default:
break;
}
//linux系统探测
function sys_linux() {
// CPU
if (false === ($str = @file("/proc/cpuinfo"))) return false;
$str = implode("", $str);
@preg_match_all("/model\s+name\s{0,}\:+\s{0,}([\w\s\)\(\@.]+)([\r\n]+)/s", $str, $model);
@preg_match_all("/cache\s+size\s{0,}\:+\s{0,}([\d\.]+\s{0,}[A-Z]+[\r\n]+)/", $str, $cache);
if (false !== is_array($model[1])) {
$res['cpu']['num'] = sizeof($model[1]);
for($i = 0; $i < $res['cpu']['num']; $i++) {
$res['cpu']['model'][] = $model[1][$i];
$res['cpu']['cache'][] = $cache[1][$i];
}
if (false !== is_array($res['cpu']['model'])) $res['cpu']['model'] = implode("
", $res['cpu']['model']);
if (false !== is_array($res['cpu']['cache'])) $res['cpu']['cache'] = implode("
", $res['cpu']['cache']);
}
// UPTIME
if (false === ($str = @file("/proc/uptime"))) 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));
if ($days !== 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("/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);
$res['memTotal'] = round($buf[1][0]/1024, 2);
$res['memFree'] = round($buf[2][0]/1024, 2);
$res['memCached'] = round($buf[3][0]/1024, 2);
$res['memUsed'] = ($res['memTotal']-$res['memFree']);
$res['memPercent'] = (floatval($res['memTotal'])!=0)?round($res['memUsed']/$res['memTotal']*100,2):0;
$res['memRealUsed'] = ($res['memTotal'] - $res['memFree'] - $res['memCached']);
$res['memRealPercent'] = (floatval($res['memTotal'])!=0)?round($res['memRealUsed']/$res['memTotal']*100,2):0;
$res['swapTotal'] = round($buf[4][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']*100,2):0;
// LOAD AVG
if (false === ($str = @file("/proc/loadavg"))) return false;
$str = explode(" ", implode("", $str));
$str = array_chunk($str, 4);
$res['loadAvg'] = implode(" ", $str[0]);
return $res;
}
//FreeBSD系统探测
function sys_freebsd() {
//CPU
if (false === ($res['cpu']['num'] = get_key("hw.ncpu"))) return false;
$res['cpu']['model'] = get_key("hw.model");
//LOAD AVG
if (false === ($res['loadAvg'] = get_key("vm.loadavg"))) return false;
//SWAP
if (false === ($res['swapTotal'] = get_key("hw.pagesize"))) return false;
//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 = floor($hours - ($days * 24));
$min = floor($min - ($days * 60 * 24) - ($hours * 60));
if ($days !== 0) $res['uptime'] = $days."天";
if ($hours !== 0) $res['uptime'] .= $hours."小时";
$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']*100,2):0;
$buf = explode("\n", do_command("swapinfo", "-k"));
$buf = $buf[1];
preg_match_all("/([0-9]+)\s+([0-9]+)\s+([0-9]+)/", $buf, $bufArr);
$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']*100,2):0;
return $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);
}
return trim($buffer);
}
return false;
}
//windows系统探测
function sys_windows() {
if (PHP_VERSION >= 5) {
try {
$objLocator = new COM("WbemScripting.SWbemLocator");
$wmi = $objLocator->ConnectServer();
$prop = $wmi->get("Win32_PnPEntity");
} catch (Exception $e) {
return false;
}
} else {
return false;
}
//CPU
$cpuinfo = GetWMI($wmi,"Win32_Processor", array("Name","L2CacheSize","NumberOfCores"));
$res['cpu']['num'] = $cpuinfo[0]['NumberOfCores'];
if (null == $res['cpu']['num']) {
$res['cpu']['num'] = 1;
}
for ($i=0;$i<$res['cpu']['num'];$i++){
$res['cpu']['model'] .= $cpuinfo[0]['Name']."
";
$res['cpu']['cache'] .= $cpuinfo[0]['L2CacheSize']."
";
}
// SYSINFO
$sysinfo = GetWMI($wmi,"Win32_OperatingSystem", array('LastBootUpTime','TotalVisibleMemorySize','FreePhysicalMemory','Caption','CSDVersion','SerialNumber','InstallDate'));
$res['win_n'] = $sysinfo[0]['Caption']." ".$sysinfo[0]['CSDVersion']." 序列号:{$sysinfo[0]['SerialNumber']} 于".date('Y年m月d日H:i:s',strtotime(substr($sysinfo[0]['InstallDate'],0,14)))."安装";
//UPTIME
$res['uptime'] = $sysinfo[0]['LastBootUpTime'];
$sys_ticks = 3600*8 + time() - strtotime(substr($res['uptime'],0,14));
$min = $sys_ticks / 60;
$hours = $min / 60;
$days = floor($hours / 24);
$hours = floor($hours - ($days * 24));
$min = floor($min - ($days * 60 * 24) - ($hours * 60));
if ($days !== 0) $res['uptime'] = $days."天";
if ($hours !== 0) $res['uptime'] .= $hours."小时";
$res['uptime'] .= $min."分钟";
//MEMORY
$res['memTotal'] = $sysinfo[0]['TotalVisibleMemorySize'];
$res['memFree'] = $sysinfo[0]['FreePhysicalMemory'];
$res['memUsed'] = $res['memTotal'] - $res['memFree'];
$res['memPercent'] = round($res['memUsed'] / $res['memTotal']*100,2);
$swapinfo = GetWMI($wmi,"Win32_PageFileUsage", array('AllocatedBaseSize','CurrentUsage'));
// TODO swp区获取
$res['swapTotal'] = $swapinfo[0][AllocatedBaseSize];
$res['swapUsed'] = $swapinfo[0][CurrentUsage];
$res['swapFree'] = $res['swapTotal'] - $res['swapUsed'];
$res['swapPercent'] = (floatval($res['swapTotal'])!=0)?round($res['swapUsed']/$res['swapTotal']*100,2):0;
// LoadPercentage
$loadinfo = GetWMI($wmi,"Win32_Processor", array("LoadPercentage"));
$res['loadAvg'] = $loadinfo[0]['LoadPercentage'];
return $res;
}
function GetWMI($wmi,$strClass, $strValue = array()) {
$arrData = array();
$objWEBM = $wmi->Get($strClass);
$arrProp = $objWEBM->Properties_;
$arrWEBMCol = $objWEBM->Instances_();
foreach($arrWEBMCol as $objItem) {
@reset($arrProp);
$arrInstance = array();
foreach($arrProp as $propItem) {
eval("\$value = \$objItem->" . $propItem->Name . ";");
if (empty($strValue)) {
$arrInstance[$propItem->Name] = trim($value);
} else {
if (in_array($propItem->Name, $strValue)) {
$arrInstance[$propItem->Name] = trim($value);
}
}
}
$arrData[] = $arrInstance;
}
return $arrData;
}
//比例条
function bar($percent) {
?>
浪点PHP探针,专业PHP探针 - 浪点科技
| 服务器参数 |
| 用户 - 服务器 |
- () |
| 服务器解译引擎 |
|
| 服务器标识 |
|
| 服务器时间 |
|
服务器剩余空间 |
M |
| 服务器语言 |
|
服务器端口 |
|
| 管理员邮箱 |
|
绝对路径 |
".$_SERVER['$PATH_INFO'];?> |
| ZEND版本 |
|
系统平均负载 |
=$sysInfo['loadAvg']?> |
| 服务器CPU及内存相关运行参数 |
| 服务器CPU个数 |
个 |
服务器运行时间 |
|
| 服务器型号 |
|
服务器二级缓存 |
|
| 内存使用状况 |
物理内存:
共M,
已使用M(其中Cache化内存为M,),
空闲M
含Cache化内存的使用率%(注明:类似Apache或Nginx会开辟Cache化内存加速网页或脚本存取)
(不含Cache内存部分的真实内存使用率为%)
SWAP区:共M,
已使用M,
空闲M,
使用率% (服务器Swap使用率如达30%以上,则服务器性能极低)
|
}?>
| PHP相关参数 |
| PHP信息(phpinfo): |
PHPINFO";?>
|
PHP版本(php_version): |
|
| PHP运行方式: |
|
脚本占用最大内存(memory_limit): |
|
| PHP安全模式(safe_mode): |
|
POST方法提交最大限制(post_max_size): |
|
| 上传文件最大限制(upload_max_filesize): |
|
浮点型数据显示的有效位数(precision): |
|
| 脚本超时时间(max_execution_time): |
秒 |
socket超时时间(default_socket_timeout): |
秒 |
| PHP页面根目录(doc_root): |
|
用户根目录(user_dir): |
|
| dl()函数(enable_dl): |
|
指定包含文件目录(include_path): |
|
| 显示错误信息(display_errors): |
|
自定义全局变量(register_globals): |
|
| 数据反斜杠转义(magic_quotes_gpc): |
|
"<?...?>"短标签(short_open_tag): |
|
| "<% %>"ASP风格标记(asp_tags): |
|
忽略重复错误信息(ignore_repeated_errors): |
|
| 忽略重复的错误源(ignore_repeated_source): |
|
报告内存泄漏(report_memleaks): |
|
| 自动字符串转义(magic_quotes_gpc): |
|
外部字符串自动转义(magic_quotes_runtime): |
|
| 打开远程文件(allow_url_fopen): |
|
声明argv和argc变量(register_argc_argv): |
|
| 被禁用的函数(disable_functions): =(""==($disFuns=get_cfg_var("disable_functions")))?"无":str_replace(",",", ",$disFuns)?> |
| 组件支持 |
| FTP支持: |
|
XML解析支持: |
|
| Session支持: |
|
Socket支持: |
|
| ZEND支持: |
不支持';?> |
允许URL打开文件: |
|
| GD库支持: |
|
压缩文件支持(Zlib): |
|
| IMAP电子邮件系统函数库: |
|
历法运算函数库: |
|
| 正则表达式函数库: |
|
FDF表单资料格式函数库: |
|
| Iconv编码转换: |
|
mbstring: |
|
| SNMP网络管理协议: |
|
拼写检查: |
|
| 高精度数学运算: |
|
LDAP目录协议: |
|
| MCrypt加密处理: |
|
哈稀计算: |
|
| Yellow Page系统: |
|
PDF文档支持: |
|
| VMailMgr邮件处理: |
|
WDDX支持: |
|
| 数据库支持 |
| MySQL 数据库: |
|
ODBC 数据库: |
|
| Oracle 数据库: |
|
SQL Server 数据库: |
|
| dBASE 数据库: |
|
mSQL 数据库: |
|
| SQLite 数据库: |
|
Hyperwave 数据库: |
|
| Postgre SQL 数据库: |
|
Informix 数据库: |
|
| SyBase 数据库: |
|
Oracle 8 数据库: |
|
| DBA 数据库: |
|
DBM 数据库: |
|
| FilePro 数据库: |
|
|
|