当前位置:首页 > PHP源码 > 列表

PHP测试网站本地上传下载速度源码

发布:smiling 来源: PHP粉丝网  添加日期:2013-11-16 22:55:15 浏览: 评论:0 
亲测一款php网速测试程序,超爽,平时都是在线测试本地上传和下载速度的,作为phper,看来真的是落伍了,php能做的程序功能还挺不少的,这是一款php测试网站本地上传下载速度的源码,只有一个文件,只运行一下就可以知道自己本地上传和下载的速度了,作为phper,经常使用php,可以将其制作成为一个小应用程序,放到桌面,想看本地上传下载速度时,只要运行一下就OK了,是不是很酷!
  1. <? header("Cache-Control:no-cache");   
  2. //$self = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];   
  3. $self = $_SERVER['PHP_SELF'];   
  4. if(isset($_POST['downTime'])&&isset($_POST['upTime'])){   
  5. if(is_numeric($_POST['downTime'])&is_numeric($_POST['upTime'])){   
  6. showResult();   
  7. }else{   
  8. showTest();   
  9. }   
  10. }elseif($_POST['action']=='uploadTest'){   
  11. echo 'ok';   
  12. }else{   
  13. showTest();   
  14. }   
  15. function showTest(){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM  
  16. L 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xh  
  17. tml1-transitional.dtd">   
  18. <html xmlns="http://www.w3.org/1999/xhtml">   
  19. <head>   
  20. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>  
  21. <title>PHP--网速测试程序 测试正在进行中……</title>   
  22. </head>  
  23. <body>   
  24. <table align="center" cellpadding="1" cellspacing="0">   
  25. <tr>   
  26. <td height="30" colspan="2" align="center"><b>下载速度测试中</b></td>   
  27. </tr>   
  28. <tr>   
  29. <td width="300" style="border:1px solid blue"><table cellpadding="  
  30. 0" cellspacing="0">   
  31. <tr>   
  32. <td id="downProgressBar" bgcolor="blue" style="width:0px; heigh  
  33. t:17px"></td>   
  34. </tr>   
  35. </table></td>   
  36. <td id="downProgressNum" align="right" width="35">0%</td>   
  37. </tr>   
  38. <form id="TestForm" action="" method="post"><input name="downTim  
  39. e" id="downTime" type="hidden" /><input name="upTime" id="upTim  
  40. e" type="hidden" /></form>   
  41. </table>   
  42. <script type="text/javascript">   
  43. <!--   
  44. function $id(id){   
  45. return document.getElementById(id);   
  46. }   
  47.  
  48. function setDownProgress(){   
  49. Percentage++;   
  50. dpb.style.width=(Percentage*3)+'px';   
  51. dpn.innerHTML = Percentage+'%';   
  52. }   
  53.  
  54. function setUpProgress(){   
  55. Percentage+=10;   
  56. upb.style.width=(Percentage*3)+'px';   
  57. upn.innerHTML = Percentage+'%';   
  58. if(Percentage==100){   
  59. upTime =(new Date()).getTime() - upTime;   
  60. submitTest();   
  61. }   
  62. }   
  63.  
  64. function XmlHttp(){   
  65. try{   
  66. if(window.XMLHttpRequest){   
  67. var req = new XMLHttpRequest();   
  68. if(req.readyState == null){   
  69. req.readyState = 1;   
  70. req.addEventListener("load"function(){   
  71. req.readyState = 4;   
  72. if(typeof req.onreadystatechange == "function")   
  73. req.onreadystatechange();   
  74. }, false);   
  75. }   
  76. return req;   
  77. }   
  78. if(window.ActiveXObject){   
  79. return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");   
  80. }   
  81. }   
  82. catch(e){}   
  83. }   
  84.  
  85. function getXmlHttpPrefix(){   
  86. if(getXmlHttpPrefix.prefix)   
  87. return getXmlHttpPrefix.prefix;   
  88. var prefixes = ["MSXML2","Microsoft","MSXML","MSXML3"];   
  89. var o;   
  90. for(var i=0;i<prefixes.length;i++){   
  91. try{   
  92. o = new ActiveXObject(prefixes[i] + ".XmlHttp");   
  93. return getXmlHttpPrefix.prefix = prefixes[i];   
  94. }   
  95. catch(ex){};   
  96. }   
  97. }   
  98.  
  99. function upTest(){   
  100. var xmlHttp = XmlHttp();   
  101. if(!xmlHttp)errorSubmit();   
  102. xmlHttp.open('POST','<?=$GLOBALS['self']?>',true);   
  103. xmlHttp.setRequestHeader("Content-Length",upBody.length);   
  104. xmlHttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-ur  
  105. lencoded");   
  106. xmlHttp.onreadystatechange = function(){   
  107. if(xmlHttp.readyState == 4){   
  108. setUpProgress();   
  109. }else if(xmlHttp.readyState == 3){   
  110. upTest();   
  111. }   
  112. }   
  113. xmlHttp.send(upBody);   
  114. }   
  115.  
  116. function submitTest(){   
  117. $id('downTime').value=downTime;   
  118. $id('upTime').value=upTime;   
  119. $id('TestForm').submit();   
  120. }   
  121.  
  122. function errorSubmit(t){   
  123. if(t)   
  124. upTime = t;   
  125. else   
  126. upTime = 0;   
  127. submitTest();   
  128. }   
  129.  
  130. var dpb = $id("downProgressBar");   
  131. var dpn = $id("downProgressNum");   
  132. var upClickCount = Percentage = 0;   
  133. var downTime =(new Date()).getTime();   
  134. -->   
  135. </script><?php   
  136. $outText = getTestText();   
  137. for($i = 1;$i<100;$i++){   
  138. echo '<!--'.$outText."-->\n";   
  139. echo "<script type=\"text/javascript\">setDownProgress();</scri  
  140. pt>\n";   
  141. }   
  142. ?>   
  143. <script type="text/javascript">   
  144. var outstr = '<?=$outText?>';   
  145. setDownProgress();   
  146. downTime =(new Date()).getTime()-downTime;   
  147. </script>   
  148. <table align="center" cellpadding="1" cellspacing="0">   
  149. <tr>   
  150. <td height="30" colspan="2" align="center"><b>上转速度测试中</b></td>   
  151. </tr>   
  152. <tr>   
  153. <td width="300" style="border:1px solid blue"><table cellpadding  
  154. ="0" cellspacing="0">   
  155. <tr>   
  156. <td id="upProgressBar" bgcolor="blue" style="width:0px; height:17p  
  157. x"></td>   
  158. </tr>   
  159. </table></td>   
  160. <td id="upProgressNum" align="right" width="35">0%</td>   
  161. </tr>   
  162. </table>   
  163. <script type="text/javascript">   
  164. Percentage =0;   
  165. var upb = $id("upProgressBar");   
  166. var upn = $id("upProgressNum");   
  167. var upBody='';   
  168. for(i=0;i<10;i++)upBody +=outstr;   
  169. upBody = 'action=uploadTest&content='+upBody;   
  170. setTimeout('errorSubmit(-1)',300000);   
  171. upTest();   
  172. var upTime =(new Date()).getTime();   
  173. </script>   
  174. </body>   
  175. </html><?php   
  176. }   
  177. function showResult(){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM  
  178. L 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t  
  179. ransitional.dtd">   
  180. <html xmlns="http://www.w3.org/1999/xhtml">   
  181. <head>   
  182. <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>  
  183. <title>PHP--测试结果</title>   
  184. </head>   
  185. <body>   
  186. 说明,本程序测试的上传速度为上传到本站的速度<br /><br /><?php   
  187. $dKBps = round(500000/$_POST['downTime'],2);   
  188. $dKbps = $dKBps * 8;   
  189. echo '下载速度:'.$dKbps.'Kbps,相当于'.$dKBps."KB/s<br />\n";   
  190. if($_POST['upTime']=='-1'){   
  191. echo '上转测试超时。';   
  192. }else if($_POST['upTime']=='0'){   
  193. echo '您的浏览器不支持本上传测试程序,请使用IE6.0以上或FireFox。';   
  194. }else{   
  195. $uKBps = round(500000/$_POST['upTime'],2);   
  196. $uKbps = $uKBps * 8;   
  197. echo '上传速度:'.$uKbps.'Kbps,相当于'.$uKBps.'KB/s';   
  198. }   
  199. echo '<br /><br /><br /><span style="padding-left:100px"><a href  
  200. ="'.$GLOBALS['self'].'">再测一次</a></span>'?>   
  201. </body>   
  202. </html><?php   
  203. }   
  204. function getTestText(){   
  205. $result;   
  206. for($i = 0;$i<5000;$i++){   
  207. $result .= '*';   
  208. }   
  209. return $result;   
  210. }?>  

Tags: PHP测试网站 上传下载

分享到: