php 探针

WBOY
WBOY原创
2016-07-25 09:10:552403浏览

php 探针

  1. /*
  2. +--------------------------------------------------------------------------
  3. | B-Check v0.05.4
  4. | ========================================
  5. | 南方第三制作
  6. | http://www.rubyfans.com
  7. | ========================================
  8. | 探针官方: 无
  9. | 最后更新: 2010.9.6 11:30
  10. | QQ:307292967
  11. +---------------------------------------------------------------------------
  12. |
  13. | 在编写过程中,学习借鉴了很多其他优秀的探针
  14. | 并根据自身的理解做了很多修改和优化,就当前而言,这是探测信息最全面的PHP探针了!
  15. | 整个执行框架,我是想到哪就写到哪,并没有进行合理的规划,我想,在以后我有时间的时候会近一步更新
  16. |
  17. +--------------------------------------------------------------------------
  18. */
  19. //抑制所有的错误信息
  20. ini_set('display_errors', 'off');
  21. //计算页面运行时间函数
  22. function getmicrotime(){
  23. list($usec, $sec) = explode(" ",microtime());
  24. return ((float)$usec + (float)$sec);
  25. }
  26. $pagestartime=getmicrotime();
  27. //显示常量
  28. define("on", "Yes");
  29. define("off", "No");
  30. define("version", "v0.05.4");//版本号
  31. define("overtime","2010.9.6  11:30");//完成时间
  32. //显示开关
  33. $mysqlReShow = "none";
  34. //使用通知,针对前几个版本中,使用通知处理不合理,导致通知邮件源源不断塞进我的邮箱。
  35. if($_COOKIE["had_send"] != "yes") {
  36. $messagex="来自:http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."\n\n版本:".version;
  37. $tox="307292967@qq.com";
  38. $subjectx="B-check User - ".version;
  39. mail($tox, $subjectx, $messagex);
  40. setcookie("had_send", "yes");
  41. }
  42. //性能信息结果刷新
  43. $ts_int = (false == empty($_POST['tsint']))?$_POST['tsint']:test_int();
  44. $ts_float = (false == empty($_POST['tsfloat']))?$_POST['tsfloat']:test_float();
  45. $ts_io = (false == empty($_POST['tsio']))?$_POST['tsio']:test_io();
  46. if(isset($_POST['speed']))
  47. {
  48. $speed=round(100/($_POST['speed']/1000),2);
  49. }
  50. elseif($_GET['speed']=="0")
  51. {
  52. $speed=6666.67;
  53. }
  54. elseif(isset($_GET['speed']) and $_GET['speed']>0)
  55. {
  56. $speed=round(100/($_GET['speed']/1000),2);
  57. }
  58. else
  59. {
  60. $speed=" 未探测 ";
  61. }
  62. //phpinfo()信息列举
  63. switch ($_GET['action']){
  64. case "phpinfo_GENERAL":
  65. phpinfo(INFO_GENERAL+INFO_ENVIRONMENT+INFO_VARIABLES);
  66. exit;
  67. case "phpinfo_CONFIGURATION":
  68. phpinfo(INFO_CONFIGURATION);
  69. exit;
  70. case "phpinfo_MODULES":
  71. phpinfo(INFO_MODULES);
  72. exit;
  73. case "phpinfo":
  74. phpinfo();
  75. exit;
  76. default:
  77. break;
  78. }
  79. //表单处理
  80. if(isset($_POST['Buginfo']) and $_POST['act']=="提交"){//Bug提交!
  81. $message=$message."\n\n 来自:".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];
  82. $to="307292967@qq.com";
  83. $subject="浩哥你多大了?";
  84. $jg=@mail($to, $subject, $message);
  85. $jgprint= (true==$jg)?"上报成功!谢谢你!":"上报失败!写信给我吧:307292967@qq.com";
  86. }
  87. elseif($_POST['action']=="整数运算")
  88. {
  89. $ts_int=test_int();
  90. }
  91. elseif($_POST['action']=="浮点运算")
  92. {
  93. $ts_float=test_float();
  94. }
  95. elseif($_POST['action']=="IO测试")
  96. {
  97. $ts_io=test_io();
  98. }
  99. elseif($_POST['action']=="开始测试")//网速测试,等你来完善。
  100. {
  101. ?>
  102. for($i=1;$iecho "";
  103. }
  104. ?>
  105. }
  106. elseif($_POST['action'] == "连接Mysql")
  107. {
  108. $mysqlReShow = "show";
  109. $mysqlRe = "MYSQL连接测试结果:";
  110. $mysqlRe .= (false !==mysql_connect($_POST['mysqlhost'], $_POST['mysqluser'], $_POST['mysqlpsd']))?"MYSQL服务器连接正常,":"MYSQL服务器连接失败!, ";
  111. $mysqlRe .= "数据库 ".$_POST['mysqldb']."  ";
  112. $mysqlRe .= (false != @mysql_select_db($_POST['mysqldb']))?"连接正常":"连接失败!";
  113. if(false !==mysql_connect($_POST['mysqlhost'], $_POST['mysqluser'], $_POST['mysqlpsd']))
  114. {
  115. $mysql_version=mysql_get_server_info();
  116. }
  117. else
  118. {
  119. $mysql_version="获取失败!";
  120. }
  121. $mysqlRe .= ",Mysql服务器版本:";
  122. $mysqlRe .= $mysql_version;
  123. }
  124. elseif($_POST['action'] == "发送")
  125. {
  126. $mailRe = (false !== @mail($_POST["mailReceiver"], "探针邮件测试", "成功发送!"))?"发送完成":"发送失败!";
  127. }
  128. elseif($_POST['action']=="检测")
  129. {
  130. $funre=$_POST['funame']." 的支持情况:".getfunexists($_POST['funame']);
  131. }
  132. elseif($_POST['action']=="检测1")
  133. {
  134. $pmre=$_POST['pm']." 的支持情况:".getvar($_POST['pm']);
  135. }
  136. //获取Zend Optimizer版本,方法参考了废墟のPHP探针
  137. function checkoptimizer()
  138. {
  139. $url= "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?action=phpinfo";
  140. $htmlct=file_get_contents($url);
  141. eregi("Optimizer v(.*), Copyright", $htmlct, $regs);
  142. $optimizerversion=$regs[1];
  143. $optimizerversion=(''!=$optimizerversion)?$optimizerversion:"获取失败!";
  144. return $optimizerversion;
  145. }
  146. //获取php.ini配置参数,参考iProber
  147. function getvar($varname)
  148. {
  149. switch($var=get_cfg_var($varname)?get_cfg_var($varname):ini_get($varname))
  150. {
  151. case 0:
  152. return off;
  153. break;
  154. case 1:
  155. return on;
  156. break;
  157. default:
  158. return $var;
  159. break;
  160. }
  161. }
  162. //判断函数定义情况
  163. function getfunexists($funame)
  164. {
  165. return (false !== function_exists($funame))?on:off;
  166. }
  167. //整数运算测试
  168. function test_int()
  169. {
  170. $startime=getmicrotime();
  171. for($i = 0; $i {
  172. $t = 1+1;
  173. }
  174. $endtime=getmicrotime();
  175. $time=round($endtime-$startime,4);
  176. return $time;
  177. }
  178. //浮点数运算测试
  179. function test_float()
  180. {
  181. $startime=getmicrotime();
  182. for($i = 0; $i {
  183. sqrt($t);
  184. }
  185. $endtime=getmicrotime();
  186. $time=round($endtime-$startime,4);
  187. return $time;
  188. }
  189. //IO能力测试
  190. function test_io()
  191. {
  192. $fp = fopen($_SERVER['PHP_SELF'], "r");
  193. $startime=getmicrotime();
  194. for($i = 0; $i {
  195. fread($fp, 10240);
  196. rewind($fp);
  197. }
  198. $endtime=getmicrotime();
  199. $time=round($endtime-$startime,4);
  200. return $time;
  201. }
  202. //获取磁盘信息、disk_x_space("y")的参数不能用变量,@在这里不起作用
  203. $diskct=0;
  204. $disk=array();
  205. /*if(@disk_total_space("A:")!=NULL) *为防止影响服务器,不检查软驱 - 阿江说的
  206. {
  207. $diskct=1;
  208. $disk["A"]=round((@disk_free_space("A:")/(1024*1024*1024)),2)."G / ".round((@disk_total_space("A:")/(1024*1024*1024)),2).'G';
  209. }*/
  210. $diskz=0; //磁盘总容量
  211. $diskk=0; //磁盘剩余容量
  212. if(@disk_total_space("B:")!=NULL)
  213. {
  214. $diskct++;
  215. $disk["B"][0]=round(@disk_free_space("B:")/(1024*1024*1024),2).'G';
  216. $disk["B"][1]=round(@disk_total_space("B:")/(1024*1024*1024),2).'G';
  217. $disk["B"][2]=round(((@disk_free_space("B:")/(1024*1024*1024))/(@disk_total_space("B:")/(1024*1024*1024)))*100,2).'%';
  218. $diskk+=round((@disk_free_space("B:")/(1024*1024*1024)),2);
  219. $diskz+=round((@disk_total_space("B:")/(1024*1024*1024)),2);
  220. }
  221. if(@disk_total_space("C:")!=NULL)
  222. {
  223. $diskct++;
  224. $disk["C"][0]=round((@disk_free_space("C:")/(1024*1024*1024)),2).'G';
  225. $disk["C"][1]=round((@disk_total_space("C:")/(1024*1024*1024)),2).'G';
  226. $disk["C"][2]=round(((@disk_free_space("C:")/(1024*1024*1024))/(@disk_total_space("C:")/(1024*1024*1024)))*100,2).'%';
  227. $diskk+=round((@disk_free_space("C:")/(1024*1024*1024)),2);
  228. $diskz+=round((@disk_total_space("C:")/(1024*1024*1024)),2);
  229. }
  230. if(@disk_total_space("D:")!=NULL)
  231. {
  232. $diskct++;
  233. $disk["D"][0]=round((@disk_free_space("D:")/(1024*1024*1024)),2).'G';
  234. $disk["D"][1]=round((@disk_total_space("D:")/(1024*1024*1024)),2).'G';
  235. $disk["D"][2]=round(((@disk_free_space("D:")/(1024*1024*1024))/(@disk_total_space("D:")/(1024*1024*1024)))*100,2).'%';
  236. $diskk+=round((@disk_free_space("D:")/(1024*1024*1024)),2);
  237. $diskz+=round((@disk_total_space("D:")/(1024*1024*1024)),2);
  238. }
  239. if(@disk_total_space("E:")!=NULL)
  240. {
  241. $diskct++;
  242. $disk["E"][0]=round((@disk_free_space("E:")/(1024*1024*1024)),2).'G';
  243. $disk["E"][1]=round((@disk_total_space("E:")/(1024*1024*1024)),2).'G';
  244. $disk["E"][2]=round(((@disk_free_space("E:")/(1024*1024*1024))/(@disk_total_space("E:")/(1024*1024*1024)))*100,2).'%';
  245. $diskk+=round((@disk_free_space("E:")/(1024*1024*1024)),2);
  246. $diskz+=round((@disk_total_space("E:")/(1024*1024*1024)),2);
  247. }
  248. if(@disk_total_space("F:")!=NULL)
  249. {
  250. $diskct++;
  251. $disk["F"][0]=round((@disk_free_space("F:")/(1024*1024*1024)),2).'G';
  252. $disk["F"][1]=round((@disk_total_space("F:")/(1024*1024*1024)),2).'G';
  253. $disk["F"][2]=round(((@disk_free_space("F:")/(1024*1024*1024))/(@disk_total_space("F:")/(1024*1024*1024)))*100,2).'%';
  254. $diskk+=round((@disk_free_space("F:")/(1024*1024*1024)),2);
  255. $diskz+=round((@disk_total_space("F:")/(1024*1024*1024)),2);
  256. }
  257. if(@disk_total_space("G:")!=NULL)
  258. {
  259. $diskct++;
  260. $disk["G"][0]=round((@disk_free_space("G:")/(1024*1024*1024)),2).'G';
  261. $disk["G"][1]=round((@disk_total_space("G:")/(1024*1024*1024)),2).'G';
  262. $diskk+=round((@disk_free_space("G:")/(1024*1024*1024)),2);
  263. $diskz+=round((@disk_total_space("G:")/(1024*1024*1024)),2);
  264. }
  265. if(@disk_total_space("H:")!=NULL)
  266. {
  267. $diskct++;
  268. $disk["H"][0]=round((@disk_free_space("H:")/(1024*1024*1024)),2).'G';
  269. $disk["H"][1]=round((@disk_total_space("H:")/(1024*1024*1024)),2).'G';
  270. $diskk+=round((@disk_free_space("H:")/(1024*1024*1024)),2);
  271. $diskz+=round((@disk_total_space("H:")/(1024*1024*1024)),2);
  272. }
  273. if(@disk_total_space("I:")!=NULL)
  274. {
  275. $diskct++;
  276. $disk["I"][0]=round((@disk_free_space("I:")/(1024*1024*1024)),2).'G';
  277. $disk["I"][1]=round((@disk_total_space("I:")/(1024*1024*1024)),2).'G';
  278. $diskk+=round((@disk_free_space("I:")/(1024*1024*1024)),2);
  279. $diskz+=round((@disk_total_space("I:")/(1024*1024*1024)),2);
  280. }
  281. if(@disk_total_space("J:")!=NULL)
  282. {
  283. $diskct++;
  284. $disk["J"][0]=round((@disk_free_space("J:")/(1024*1024*1024)),2).'G';
  285. $disk["J"][1]=round((@disk_total_space("J:")/(1024*1024*1024)),2).'G';
  286. $diskk+=round((@disk_free_space("J:")/(1024*1024*1024)),2);
  287. $diskz+=round((@disk_total_space("J:")/(1024*1024*1024)),2);
  288. }
  289. if(@disk_total_space("K:")!=NULL)
  290. {
  291. $diskct++;
  292. $disk["K"][0]=round((@disk_free_space("K:")/(1024*1024*1024)),2).'G';
  293. $disk["K"][1]=round((@disk_total_space("K:")/(1024*1024*1024)),2).'G';
  294. $diskk+=round((@disk_free_space("K:")/(1024*1024*1024)),2);
  295. $diskz+=round((@disk_total_space("K:")/(1024*1024*1024)),2);
  296. }
  297. if(@disk_total_space("L:")!=NULL)
  298. {
  299. $diskct++;
  300. $disk["L"][0]=round((@disk_free_space("L:")/(1024*1024*1024)),2).'G';
  301. $disk["L"][1]=round((@disk_total_space("L:")/(1024*1024*1024)),2).'G';
  302. $diskk+=round((@disk_free_space("L:")/(1024*1024*1024)),2);
  303. $diskz+=round((@disk_total_space("L:")/(1024*1024*1024)),2);
  304. }
  305. ?>
  306. PHP探针_B-Check
  307. B-Check 
  308.   |  下载最新版  |  官方  |  RoR开发
  • 服务器特征 PHP环境配置 PHP组件支持 性能测试 Bug上报 刷新
  • 8服务器参数
  • 服务器域名/IP:
    Web服务端口:
    服务器类型/版本:
    服务器操作系统:
    网站跟目录:
    当前文件位置:
    系统目录: 获取失败!"; ?> 点击此处查看提示信息
  • Path:获取失败!"; ?>
  • TEMP:获取失败!"; ?>
  • PATHEXT:获取失败!"; ?>
  • 处理器(CPU)信息: 获取失败!"; ?> 点击此处查看提示信息
  • 从左至右分别表示Type(类型)、Family(系列)、Mode(型号)、Stepping(步进编号)和Brand ID(品种标识),一般CPU都有Brand ID,如果CPU不是非常老的话。你可以通过Brand ID(品种标识)来判断服务器CPU是什么型号档次的,具体怎么判断你可以去百度或百度知道搜索!在此不细说明!
  • 处理器(CPU)个数:  点击此处查看提示信息
  • 逻辑处理器个数,IDC客服的话的可信度没有上面这个数字的可信度高。但如果上面的数是16,在以后的几年里你最好别相信那是真的。如果是... 32...(开个玩笑)
  • 服务器时间:
    磁盘空间信息:
  • 0) {?>
  • $value){ ?>
  • 盘符 总空间 剩余空间 剩余百分比
  • 总计 // if(abs($diskz-80) // {
  • // echo '80G';
  • // }
  • // elseif(abs($diskz-160) // {
  • // echo '160G';
  • // }
  • // elseif(abs($diskz-250) // {
  • // echo '250G';
  • // }
  • // elseif(abs($diskz-320) // {
  • // echo '320G';
  • // }
  • // elseif(abs($diskz-500) // {
  • // echo '500G';
  • // }
  • // elseif(abs($diskz-640) // {
  • // echo '640G';
  • // }
  • // elseif(abs($diskz-750) // {
  • // echo '750G';
  • // }
  • // elseif(abs($diskz-1024) // {
  • // echo '1TB';
  • // }
  • // elseif(abs($diskz-1024) // {
  • // echo '1TB';
  • // }
  • // elseif(abs($diskz-1536) // {
  • // echo '1.5TB';
  • // }
  • // elseif(abs($diskz-2048) // {
  • // echo '2TB';
  • // }
  • echo $diskz; ?>G
  • echo $diskk.'G'; ?>
  • %

  • 声明:只能探测盘符为大写字母A-L的磁盘,且有权限获取!
  • 8PHP环境基本配置(php.ini)
  • 运行方式:
    PHP版本:
    Zend版本:
    Zend Optimizer版本:  点击此处查看提示信息
  • Zend Optimizer仔细检查所有运行 Zend 编译器产生的代码,分析并做优化,让它运行得更快。经过测试确实可以提高程序运行速度超过60%,并且降低了程序对系统资源的耗用。
  • Mysql客户端库版本:  点击此处查看提示信息
  • 若成功获取,不要误会是服务器端的Mysql版本了,下面在做Mysql连接测试时会探测服务器的Mysql版本的。
  • ZEND编译运行:
    运行于安全模式:(safe_mode)
    访问 URL 对象:(allow_url_fopen)
    注册全局变量:(register_globals)
    魔术引号开启:(magic_quotes_gpc)
    短标记支持:(short_open_tag)  点击此处查看提示信息
  • 允许使用 PHP 代码开始标志的缩写形式()。很多PHP程序都使用短标记,如著名的Discuz!。如果你的空间不支持这个的话,要当心放DZ论坛哦。
  • 自动转义溢出字符:(magic_quotes_runtime)
    允许动态加载链接库:(enable_dl)
    显示错误信息:(display_errors)
    post最大数据量:(post_max_size)
    上传文件的最大大小:(upload_max_filesize)
    脚本最大内存使用量:(memory_limit)
    查看phpinfo(): PHPINFO
  • 8PHP组件支持情况
  • mysql数据库: 图形处理 GD 库:
    SQL Server数据库: PDF文档支持:
    Oracle数据库: FDF文档支持:
    Oracle 8 数据库: Session支持:
    mSQL数据库: Socket支持:
    SyBase数据库: XML解析支持:
    Postgre SQL数据库: FTP支持:
    Informix数据库: ODBC数据库连接:
    Hyperwave数据库: 压缩文件支持(Zlib):
    FilePro数据库: Yellow Page系统:
    DBM数据库: SNMP网络管理协议:
    DBA数据库: WDDX支持:
    dBase数据库: 拼写检查 ASpell Library:
    IMAP电子邮件系统: 历法运算 Calendar:
    VMailMgr邮件处理: LDAP目录协议:
    MCrypt加密处理: PREL相容语法 PCRE:
    高精度数学运算 BCMath: 哈稀计算 MHash:
    所有已编译模块:
  • $able=get_loaded_extensions();
  • foreach ($able as $key=>$value) {
  • if ($key!=0 && $key%13==0) {
  • echo '
    ';
  • }
  • echo "$value   ";
  • }
  • ?>
  • 8服务器性能测试
    检测对象 整数运算能力测试
  • (1+1运算300万次)
  • 浮点运算能力测试
  • (开平方300万次)
  • 数据I/O能力测试
  • (读取K文件30万次)
  • 南方第三的电脑(AMD4000+ 1G) 0.3502 秒 0.3591 秒 0.0394 秒
    92合租浙江贵宾10人合租空间 0.2112 秒 0.2240 秒 0.0225 秒
    正在使用的这台服务器 ".$ts_int.""; ?> 秒
    ".$ts_float.""; ?> 秒
    ".$ts_io.""; ?> 秒
    网络速度测试:

  • (向客户端传送 100k 字节数据)
  • 1M 2M ADSL 10M LAN
  • {
  • echo "0";
  • }
  • else{
  • echo 500*$speed/(1024*4);
  • }
  • ?>">
  • {
  • echo "500";
  • }
  • else{
  • echo 500-500*$speed/(1024*4);
  • }
  • ?>"> kb/s
  • ".$_GET['speed']."毫秒":" 未探测 " ?>
  • }
  • if("show"==$mysqlReShow){
  • ?>
  • 8自定义测试项目
    Myslq数据库连接测试
    Mysql服务器: Mysql用户名:
    Mysql密码: Mysql数据库名称:
  •  
  •  点击此处查看提示信息
  • 服务器Mysql版本:   如果数据库连接失败,将无法探测该项!
  • MAIL邮件发送测试
    测试邮件发送到:  
    函数支持检测
    探测的函数名:
    PHP配置(php.ini)检测
    探测的参数名:
  • Bug上报:
  •   
  • $pagendtime=getmicrotime();
  • $pagetime=round($pagendtime-$pagestartime,5);
  • ?>
  • php 探针 " alt="PHP Logo !" />   
  • php 探针 " alt="Zend Logo !" />  
  • 南方第三制作   欢迎访问Ruby爱好:www.rubyfans.com  Ruby on Rails开发
  • 制作平台:WinXP   Apache v2.0.63  PHP v5.2.6   Mysql v5.0.51b  现学现卖
  • 版本:   完成时间:
  • 页面执行时间
  • 下载PHP 下载MySQL 下载Zend Optimizer 下载Apache
  • 复制代码 php 探针


  • 声明:
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn