您的位置主页 > 编程专区 > Php > php版服务器网速测试源代码

php版服务器网速测试源代码

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

 

  • 上一篇:php环境下fckeditor上传图片加水印
  • 下一篇:没有了
  • 文章评论(查看全部)

    验证码: 中评 好评 差评