A-A+
PHP测试网站本地上传下载速度源码
亲测一款php网速测试程序,超爽,平时都是在线测试本地上传和下载速度的,作为phper,看来真的是落伍了,php能做的程序功能还挺不少的,这是一款php测试网站本地上传下载速度的源码,只有一个文件,只运行一下就可以知道自己本地上传和下载的速度了,作为phper,经常使用php,可以将其制作成为一个小应用程序,放到桌面,想看本地上传下载速度时,只要运行一下就OK了,是不是很酷!
<? header("Cache-Control:no-cache");
//$self = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$self = $_SERVER['PHP_SELF'];
if(isset($_POST['downTime'])&&isset($_POST['upTime'])){
if(is_numeric($_POST['downTime'])&is_numeric($_POST['upTime'])){
showResult();
}else{
showTest();
}
}elseif($_POST['action']=='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 = ["MSXML2","Microsoft","MSXML","MSXML3"];
var o;
for(var i=0;i<prefixes.length;i++){
try{
o = new ActiveXObject(prefixes[i] + ".XmlHttp");
return getXmlHttpPrefix.prefix = prefixes[i];
}
catch(ex){};
}
}
function upTest(){
var xmlHttp = XmlHttp();
if(!xmlHttp)errorSubmit();
xmlHttp.open('POST','<?=$GLOBALS['self']?>',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['downTime'],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['self'].'">再测一次</a></span>'?>
</body>
</html><?php
}
function getTestText(){
$result;
for($i = 0;$i<5000;$i++){
$result .= '*';
}
return $result;
}?>
无法复制?
这怎么用啊?是不是把上面的代码复制另存为后缀名exe的文件就可以了。我那样做了,可惜不行。
晕啊,上面的代码是php代码,需要php的运行环境。