A-A+

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

2012年11月08日 PHP源码分享 评论 3 条 阅读 783 views 次

亲测一款php网速测试程序,超爽,平时都是在线测试本地上传和下载速度的,作为phper,看来真的是落伍了,php能做的程序功能还挺不少的,这是一款php测试网站本地上传下载速度的源码,只有一个文件,只运行一下就可以知道自己本地上传和下载的速度了,作为phper,经常使用php,可以将其制作成为一个小应用程序,放到桌面,想看本地上传下载速度时,只要运行一下就OK了,是不是很酷!

<? header("Cache-Control:no-cache"); 
//$self = 'http://'.$_SERVER&#91;'HTTP_HOST'&#93;.$_SERVER&#91;'PHP_SELF'&#93;; 
$self = $_SERVER&#91;'PHP_SELF'&#93;; 
if(isset($_POST&#91;'downTime'&#93;)&&isset($_POST&#91;'upTime'&#93;)){ 
if(is_numeric($_POST&#91;'downTime'&#93;)&is_numeric($_POST&#91;'upTime'&#93;)){ 
showResult(); 
}else{ 
showTest(); 
} 
}elseif($_POST&#91;'action'&#93;=='uploadTest'){ 
echo 'ok'; 
}else{ 
showTest(); 
} 
function showTest(){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM
L 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xh
tml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>PHP--网速测试程序 测试正在进行中……</title> 
</head>
<body> 
<table align="center" cellpadding="1" cellspacing="0"> 
<tr> 
<td height="30" colspan="2" align="center"><b>下载速度测试中</b></td> 
</tr> 
<tr> 
<td width="300" style="border:1px solid blue"><table cellpadding="
0" cellspacing="0"> 
<tr> 
<td id="downProgressBar" bgcolor="blue" style="width:0px; heigh
t:17px"></td> 
</tr> 
</table></td> 
<td id="downProgressNum" align="right" width="35">0%</td> 
</tr> 
<form id="TestForm" action="" method="post"><input name="downTim
e" id="downTime" type="hidden" /><input name="upTime" id="upTim
e" type="hidden" /></form> 
</table> 
<script type="text/javascript"> 
<!-- 
function $id(id){ 
return document.getElementById(id); 
} 

function setDownProgress(){ 
Percentage++; 
dpb.style.width=(Percentage*3)+'px'; 
dpn.innerHTML = Percentage+'%'; 
} 

function setUpProgress(){ 
Percentage+=10; 
upb.style.width=(Percentage*3)+'px'; 
upn.innerHTML = Percentage+'%'; 
if(Percentage==100){ 
upTime =(new Date()).getTime() - upTime; 
submitTest(); 
} 
} 

function XmlHttp(){ 
try{ 
if(window.XMLHttpRequest){ 
var req = new XMLHttpRequest(); 
if(req.readyState == null){ 
req.readyState = 1; 
req.addEventListener("load", function(){ 
req.readyState = 4; 
if(typeof req.onreadystatechange == "function") 
req.onreadystatechange(); 
}, false); 
} 
return req; 
} 
if(window.ActiveXObject){ 
return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp"); 
} 
} 
catch(e){} 
} 

function getXmlHttpPrefix(){ 
if(getXmlHttpPrefix.prefix) 
return getXmlHttpPrefix.prefix; 
var prefixes = &#91;"MSXML2","Microsoft","MSXML","MSXML3"&#93;; 
var o; 
for(var i=0;i<prefixes.length;i++){ 
try{ 
o = new ActiveXObject(prefixes&#91;i&#93; + ".XmlHttp"); 
return getXmlHttpPrefix.prefix = prefixes&#91;i&#93;; 
} 
catch(ex){}; 
} 
} 

function upTest(){ 
var xmlHttp = XmlHttp(); 
if(!xmlHttp)errorSubmit(); 
xmlHttp.open('POST','<?=$GLOBALS&#91;'self'&#93;?>',true); 
xmlHttp.setRequestHeader("Content-Length",upBody.length); 
xmlHttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-ur
lencoded"); 
xmlHttp.onreadystatechange = function(){ 
if(xmlHttp.readyState == 4){ 
setUpProgress(); 
}else if(xmlHttp.readyState == 3){ 
upTest(); 
} 
} 
xmlHttp.send(upBody); 
} 

function submitTest(){ 
$id('downTime').value=downTime; 
$id('upTime').value=upTime; 
$id('TestForm').submit(); 
} 

function errorSubmit(t){ 
if(t) 
upTime = t; 
else 
upTime = 0; 
submitTest(); 
} 

var dpb = $id("downProgressBar"); 
var dpn = $id("downProgressNum"); 
var upClickCount = Percentage = 0; 
var downTime =(new Date()).getTime(); 
--> 
</script><?php 
$outText = getTestText(); 
for($i = 1;$i<100;$i++){ 
echo '<!--'.$outText."-->\n"; 
echo "<script type=\"text/javascript\">setDownProgress();</scri
pt>\n"; 
} 
?> 
<script type="text/javascript"> 
var outstr = '<?=$outText?>'; 
setDownProgress(); 
downTime =(new Date()).getTime()-downTime; 
</script> 
<table align="center" cellpadding="1" cellspacing="0"> 
<tr> 
<td height="30" colspan="2" align="center"><b>上转速度测试中</b></td> 
</tr> 
<tr> 
<td width="300" style="border:1px solid blue"><table cellpadding
="0" cellspacing="0"> 
<tr> 
<td id="upProgressBar" bgcolor="blue" style="width:0px; height:17p
x"></td> 
</tr> 
</table></td> 
<td id="upProgressNum" align="right" width="35">0%</td> 
</tr> 
</table> 
<script type="text/javascript"> 
Percentage =0; 
var upb = $id("upProgressBar"); 
var upn = $id("upProgressNum"); 
var upBody=''; 
for(i=0;i<10;i++)upBody +=outstr; 
upBody = 'action=uploadTest&content='+upBody; 
setTimeout('errorSubmit(-1)',300000); 
upTest(); 
var upTime =(new Date()).getTime(); 
</script> 
</body> 
</html><?php 
} 
function showResult(){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTM
L 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t
ransitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
<title>PHP--测试结果</title> 
</head> 
<body> 
说明,本程序测试的上传速度为上传到本站的速度<br /><br /><?php 
$dKBps = round(500000/$_POST&#91;'downTime'&#93;,2); 
$dKbps = $dKBps * 8; 
echo '下载速度:'.$dKbps.'Kbps,相当于'.$dKBps."KB/s<br />\n"; 
if($_POST['upTime']=='-1'){ 
echo '上转测试超时。'; 
}else if($_POST['upTime']=='0'){ 
echo '您的浏览器不支持本上传测试程序,请使用IE6.0以上或FireFox。'; 
}else{ 
$uKBps = round(500000/$_POST['upTime'],2); 
$uKbps = $uKBps * 8; 
echo '上传速度:'.$uKbps.'Kbps,相当于'.$uKBps.'KB/s'; 
} 
echo '<br /><br /><br /><span style="padding-left:100px"><a href
="'.$GLOBALS&#91;'self'&#93;.'">再测一次</a></span>'?> 
</body> 
</html><?php 
} 
function getTestText(){ 
$result; 
for($i = 0;$i<5000;$i++){ 
$result .= '*'; 
} 
return $result; 
}?>

3 条留言  访客:3 条  博主:0 条

  1. kvidu

    无法复制?

  2. 一级水平

    这怎么用啊?是不是把上面的代码复制另存为后缀名exe的文件就可以了。我那样做了,可惜不行。

    • smiling

      晕啊,上面的代码是php代码,需要php的运行环境。

给我留言