菜鸟编写的一个PHP数据压力单元测试的例子

php测试数据库压力

对于我实习生,有很多描述不好,请大家帮我看看,想把这代码写得更好
1. 下面对数据库操作的类(testclass.php),里面引用了一个配置文件ini.php,与一个时间计算的文件

<?php

header("Content-Type:text/html; charset=utf-8"); //页面编码要加上
include_once('ini.php'); //导入数据库配置
include_once('time.php'); //导入时间

/*
*定义类 Unit_Test
*初始化函数 __contruct
*/

class Unit_Test extends runtime{

private $dbhost;

private $dbport;
private $dbuser;
private $dbpwd;
private $dbname;
private $dbcharset;
private $tablename;

/*
*初始化函数 __construct
*变量 $dbhost 地址

*变量 $dbport 端口
*变量 $dbuser 用户
*变量 $dbpwd 密码
*变量 $dbname 数据库
*变量 $dbcharset 字符编码
*变量 $tablename 数据表
*/
function __construct($dbhost, $dbport, $dbuser, $dbpwd, $dbname, $dbcharset, $tablename){

  $this->dbhost = $dbhost;
$this
->dbport = $dbport;
$this
->dbuser = $dbuser;
$this
->dbpwd = $dbpwd;
$this
->dbname = $dbname;
$this
->dbcharset = $dbcharset;
$this
->tablename = $tablename;    
 
}

/*
*自定义方法 DateConnect()
*变量 $link

*
*/

function DateConnect(){

  $link  = mysql_connect($this->dbhost.':'.$this->dbport,$this->dbuser,$this->dbpwd) or die($this->error);
  mysql_select_db
($this->dbname,$link) or die('没有该数据库:'.$this->dbname);
  mysql_query
("SET NAMES '$this->dbcharset'");
 
return $link;
 
}

/*
*自定义方法 SelectMysql()
*执行语句
*/
function query($sql){

  $query= mysql_query($sql);
 
return $query;
 
}

/*
*自定义方法 TableList()
*
*return $ArrayTable表的数组
*/
function TableList(){

  $ArrayTable = array();
  $Tablesql
="show tables from ".$this->dbname;
  $TableResult
=$this->query($Tablesql);
 
if($TableResult){
         
while($row=mysql_fetch_row($TableResult)){
              $ArrayTable
[]=$row[0];
         
}
     
}
     
return $ArrayTable;
 
}

/*
*自定义方法 GetFiledType() 获取单个表的字段属性
*变量 $table 表名
*return $ArrayFiled 返回表的所有字段属性
*/

function GetFiledType($table){

  $sql = "SELECT  COLUMN_NAME,COLUMN_TYPE,EXTRA FROM information_schema.`COLUMNS` where TABLE_SCHEMA like '$this->dbname' and TABLE_NAME like '".$table."'";
  $FiledResult
=$this->query($sql);
 
if($FiledResult){
     
while($row=mysql_fetch_row($FiledResult)){
          $ArrayFiled
[]=$row;
         
}
     
}
     
return $ArrayFiled;
 
}
  /**
  *自定义方法          GetAllFiledType()           获取数据库里的所有表的字段属性
  *return                 $ArrayAllFiledType     返回数据库里所有表的字段属性
  *
  */

 
function GetAllFiledType(){
     
foreach($this->TableList() as $list){
              $ArrayAllFiledType
[$list] =$this->GetFiledType($list);
         
}
         
return $ArrayAllFiledType;
 
}
   //生成随机数
function genRandomString($len)
{
    $chars
= array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
    $charsLen
= count($chars) - 1;
    shuffle
($chars); // 将数组打乱
    $output = "";
   
for ($i = 0; $i < $len; $i++)
   
{
        $output
.= $chars[mt_rand(0, $charsLen)];
   
}
   
return $output;
}
/**
*自定义方法            IfType()        判断字段类型,随机生成数据
*参数                        $rows              数据结果集
*return                    $RowValues 字段值
*/

function IfType($rows){
         
if ($rows['EXTRA'] == 'auto_increment')
   
{
        $name_value
= "";
   
} elseif ($rows['DATA_TYPE'] == 'enum')
   
{
        $name_value
= mt_rand(1, 2);
   
} elseif ($rows['DATA_TYPE'] == 'text')
   
{
        $name_value
= $this->genRandomString(rand(250 % 2, 250));
   
} elseif ($rows['DATA_TYPE'] == 'int' | $rows['DATA_TYPE'] == 'tinyint')
   
{
        $name_value
= mt_rand(pow(10, $rows['NUMERIC_PRECISION']) % 2, pow(10, $rows['NUMERIC_PRECISION']));
   
} elseif ($rows['DATA_TYPE'] == 'varchar' | $rows['DATA_TYPE'] == 'char')
   
{
        $name_value
= $this->genRandomString(rand($rows['CHARACTER_MAXIMUM_LENGTH'] % 2,
            $rows
['CHARACTER_MAXIMUM_LENGTH']));
   
} else
   
{
        $name_value
= "";
   
}
   
return @$RowValues.= $rows['COLUMN_NAME']."='".$name_value."',";
         
}
  /**
  *自定义方法          InsertDate()    拼接mysql语句
  *参数                     $TableName     数据表
  *参数                     $num                   值
  *变量                     $TableName     表名
  *变量                     $num                   数值
  *return                 substr($cc,0,-1);      拼接语句
  */

 
function InsertDate($TableName,$num){
      $PJSql
="";
        runtime
::start();
        $sql
= "SELECT  COLUMN_NAME,DATA_TYPE,EXTRA,NUMERIC_PRECISION,CHARACTER_MAXIMUM_LENGTH FROM information_schema.`COLUMNS` where TABLE_SCHEMA like '$this->dbname' and TABLE_NAME like '$TableName'";
        $InsertResult
=$this->query($sql);
        $arr
=array();
       
while($rows=mysql_fetch_assoc($InsertResult)){
            $arr
[]=$rows;
           
}
        runtime::stop();
            echo runtime
::spent()."<br>";
       
for($i=0;$i<$num;$i++){
            $mysql="insert into ".$TableName." set ";
            $PJValues
="";
            foreach($arr as $value){
                $PJValues
.=$this->IfType($value);
               
}
            $PJSql
.=$mysql.substr($PJValues,0,-1).";";
        }
        return substr($PJSql,0,-1);
     
}
      /**
      *自定义方法      multiQuery()        执行mysql语句
      *参数                 表名,数值
      */

     
function multiQuery($TableName,$num){
          $mysqli
= $this->InsertDate($TableName,$num);
          $dbc
= mysqli_connect($this->dbhost . ":" . $this->dbport, $this->dbuser, $this->
        dbpwd
, $this->dbname);
        mysqli_multi_query
($dbc, $mysqli);
         
}

}

?>


2.ini.php配置文件

<?php

$dbhost="192.168.1.120";
$dbport='3306';
$dbuser="root";
$dbpwd="123456";
$dbname="iys_tasks";
$dbcharset='utf8';
?>


3.时间文件time.php

<?php

/**
* @author phpadmin
* @copyright 2014
*/

class runtime
{
var $StartTime = 0;
var $StopTime = 0;

function get_microtime()
{
list($usec, $sec) = explode(' ', microtime()); //explode();

/* microtime();out:0.03125400 1259580902 如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 */

return ((float)$usec + (float)$sec);
}

function start()
{
$this->StartTime = $this->get_microtime();
}

function stop()
{
$this->StopTime = $this->get_microtime();
}

function spent()
{
return round(($this->StopTime - $this->StartTime) * 1000, 1);
}

}

?>

4.操作文件json.php,该文件中引用了一个模版show.html

<?php

/*
* ServerInfo()数据库版本号
* HTML_Head()HTML代码头部
* HTML_Foot()HTML代码底部
*/
/
*
* 程序头文件
* 作用 : 动态 / 静态加载执行文件
* 处理路由
*/
header("Content-Type:text/html; charset=utf-8"); //页面编码要加上
define('TimeZone', +8.0);

include_once("testclass.php");

function iYS_Main()
{

global $dbhost, $dbport, $dbuser, $dbpwd, $dbname, $dbcharset, $Obj_UnitTest, $tablename,
    $arrRum
;
$Str_Active
= @$_GET['do'] . "";
@$AddTableName = $_GET['id'];
@$PostValue = $_GET['PostValue'];
@$PostFor = $_GET['PostFor'];
$Obj_UnitTest
= new Unit_Test($dbhost, $dbport, $dbuser, $dbpwd, $dbname, $dbcharset,
    $Str_Active
);
$Obj_UnitTest
->DateConnect();
switch ($Str_Active)
{
   
case "":
        iYS_indexController
($Str_Active);
       
break;
   
case "Add":
        iYS_ExecuteAdd
($AddTableName, $PostValue, $PostFor);
       
break;
   
default:
        iYS_indexController
($Str_Active);
       
break;
}

}
iYS_Main();
/**
* ServerInfo()数据库版本号
*/
function ServerInfo()
{

$server_Info = mysql_get_server_info();
echo
"<script>var MysqlServerInfo='$server_Info';</script>";

}
/**
* HTML_Head()HTML代码头部
*/
function HTML_Head()
{

echo "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf8' /><title>添加数据测试</title></head><body>";

}
/**
* HTML_Foot()HTML代码底部
*/
function HTML_Foot()
{

echo '</body></html>';

}

/**
* 增加数据
* 全局使用方法:global
* @param $jsTableName是通过页面cookie值获得操作表,$time是添加数据所需要的时间
* @return 返回值是一段JS代码
*/
function iYS_ExecuteAdd($AddTableName, $PostValue, $PostFor)
{

global $Obj_UnitTest;
$runtime
= new runtime();
$StartTime
= $runtime->start();
$value
= $PostValue * $PostFor;
HTML_Head
();
/**
 * 我的想法就是:打开缓存机制ob_start();----在PHP文件里循环执行数据插入记录为条件,
 * 每执行一次循环都执行js函数setDownloaded(已添加条数),冲出缓存ob_flush();----
 * 刷新输出的缓存flush();通过调用json.js来实现进度条,table.php进度条显示文件(在iframe里显示);
 * 有一处不明白,就是把php执行后输出的结果集,由隐藏帧里的制作进度条(当php执行后,那进度条不是在完成后,
 * 再执行吗?如果PHP程序还没有执行完,进度条就不能动)
 */

if ($PostValue != "")
{
    for ($i = 1; $i <= $PostFor; $i++)
   
{
        $Obj_UnitTest
->multiQuery($AddTableName, $PostValue);
   
}
    $StopTime
= $runtime->stop();
    $time
= $runtime->spent();
    echo
'<script>var jsTime=' . $time . ';parent.Execute_Test(null,jsTime);</script>';
   
/**
     *jsTime插入数据所用的时间
     */

}
HTML_Foot
();

}
/**
* 初始化HTML页面,并传输本程序所需的基础数据
* 全局使用方法:global
* @param string $name 变量名称
* @return $arrResult把表数组($ArrTable)、访问表参数($js_Active)、字段数组($arrRum)用json与js交互数据
* 方法返回值是一段由变量赋值给js变量的代码
*/
function iYS_indexController($Str_Active)
{

global $Obj_UnitTest;
$js_Active
= json_encode($Str_Active);
$ArrTable
= json_encode($Obj_UnitTest->TableList());
$arrRum
= json_encode($Obj_UnitTest->GetAllFiledType());
//print_r($arrRum);
HTML_Head
();
ServerInfo();
/**
 *TableArray数据表阵列
 *jsArray数据库里所有字段属性阵列
 *ID是操作表
 *show.php引用模版文件        
 */

echo
'<script >var TableArray=' . $ArrTable . ';var ID=' . $js_Active .
   
';var jsArray=' . $arrRum . ';</script>';
include
("show.html");
HTML_Foot
();

}

?>

5.show.html文件

<!--
TableArray数据表阵列
jsArray数据库里所有字段属性阵列
ID是操作表
引用模版文件

-->

<!-- 导入常用函数 -->
<script language=javascript src=iYS_Function.js></script>
<!-- 本页面使用的前端函数 Start -->
<SCRIPT type="text/javascript">
<!--

/* 定义全局的 Javascript 变体 */
var Int_AllNumber=1000,Arr_connection=[5,10,20,40,50,100,200,500]; //速度测试使用
var Str_TableName="";
var Int_ID=0;
/* 输出数据表名 */
function Show_Table(){
   
var s="";
   
var Str_Template="<LI onclick=Show_Attrib('$1'); class=iLI ID=__Sys_TableName_$3__>$2</LI>";
   
for(var i=0;i<TableArray.length;i++)
   
{
        s
+=Str_Template.replace("$1",TableArray[i]).replace("$2",TableArray[i]).replace("$3",TableArray[i]);
   
}
   
return s;
}
/* 输出指定数据表的字段结构 */
function Show_Attrib(ID)
{
   
var s="";
   
var reg="";
   
var Str_Template="$1<br/>";
   
for(var i=0;i<jsArray[ID].length;i++)
   
{
        s
+=Str_Template.replace("$1",jsArray[ID][i]);
   
}
    reg
=new RegExp("([^']),","g");
    s
=s.replace(reg,"$1 ");
    $("__Sys_TableStructure__").innerHTML=s;
   
Str_TableName=ID;   // 定义现在使用的表名
   
// 设置表名的CSS
   
for(var i=0;i<TableArray.length;i++)
   
{
        killclass
("__Sys_TableName_"+TableArray[i]+"__","B");
   
}
    $
("__Sys_TableName_"+ID+"__").className="B iLI";
}
/* 速度测试 */  
function Show_SpeedTest()
{
   
var s="";
   
var Str_Template="<LI><span class=TestMode><INPUT type=checkbox ID=__Sys_ST_$2__>&nbsp; $1</span><span Class=TestResult ID=__Sys_ST_Speed_$3__>&nbsp; </span><span Class=Testtips ID=__Sys_ST_Tips_$4__>&nbsp; </span></LI>";
   
for(var i=0;i<Arr_connection.length;i++)
   
{
        s
+=Str_Template.replace("$1",Arr_connection[i]+" * "+(Int_AllNumber/Arr_connection[i])).replace("$2",i).replace("$3",i).replace("$4",i);
   
}
   
return s;
}
/* 执行速度测试 */
function Execute_Test(ID,Dtm_Date)
{
   
if(isNull(Dtm_Date)){
       
// 没有回传执行时间,第一次运行函数
       
Int_ID=0;
        ID
=Int_ID;
        $
("__Sys_ST_Button__").value="正在测试";
        $
("__Sys_ST_Button__").disabled=true;
        $
("hiddenframe").src="Json.php?id="+Str_TableName+"&do=Add&PostValue="+Arr_connection[ID]+"&PostFor="+(Int_AllNumber/Arr_connection[ID])+"";
   
}else{
       
Int_ID+=1;ID=Int_ID;
        $
("__Sys_ST_Speed_"+(ID-1)+"__").innerHTML=Dtm_Date;   //回传显示执行的时间
       
if(ID<Arr_connection.length)
       
{
            $
("hiddenframe").src="Json.php?id="+Str_TableName+"&do=Add&PostValue="+Arr_connection[ID]+"&PostFor="+(Int_AllNumber/Arr_connection[ID])+"";
       
}else{
           
//测试完成\
           
var s="";
           
for(var i=0;i<Arr_connection.length;i++)
           
{
               
if(i>0){s+=",";}
                s
+=$("__Sys_ST_Speed_"+i+"__").innerHTML;
                $
("__Sys_ST_"+i+"__").checked=false;
           
}
           
var a=eval("["+s+"];");
            s
=Math.min.apply(null, a);
           
for(var i=0;i<Arr_connection.length;i++)
           
{
               
if($("__Sys_ST_Speed_"+i+"__").innerHTML==s)
               
{
                    $
("__Sys_ST_Tips_"+i+"__").innerHTML="最优结果,推荐采用";
                    $
("__Sys_ST_"+i+"__").checked=true;
               
}
           
}
            $
("__Sys_ST_Button__").value="重新测试";
            $
("__Sys_ST_Button__").disabled=false;
       
}
   
}
感谢您为本话题评分。
共有2个回答
  • 0

    第一次发,所以排版有点问题,但代码是完整的

  • 0

    因为排版问题,show.html有一些没有显示
    下面是show.html

    <!--

    TableArray数据表阵列
    jsArray数据库里所有字段属性阵列
    ID是操作表
    引用模版文件

    -->

    <!-- 导入常用函数 -->
    <script language=javascript src=iYS_Function.js></script>
    <!-- 本页面使用的前端函数 Start -->
    <SCRIPT type="text/javascript">
    <!--

    /* 定义全局的 Javascript 变体 */
    var Int_AllNumber=1000,Arr_connection=[5,10,20,40,50,100,200,500]; //速度测试使用
    var Str_TableName="";
    var Int_ID=0;
    /* 输出数据表名 */
    function Show_Table(){
       
    var s="";
       
    var Str_Template="<LI onclick=Show_Attrib('$1'); class=iLI ID=__Sys_TableName_$3__>$2</LI>";
       
    for(var i=0;i<TableArray.length;i++)
       
    {
            s
    +=Str_Template.replace("$1",TableArray[i]).replace("$2",TableArray[i]).replace("$3",TableArray[i]);
       
    }
       
    return s;
    }
    /* 输出指定数据表的字段结构 */
    function Show_Attrib(ID)
    {
       
    var s="";
       
    var reg="";
       
    var Str_Template="$1<br/>";
       
    for(var i=0;i<jsArray[ID].length;i++)
       
    {
            s
    +=Str_Template.replace("$1",jsArray[ID][i]);
       
    }
        reg
    =new RegExp("([^']),","g");
        s
    =s.replace(reg,"$1 ");
        $("__Sys_TableStructure__").innerHTML=s;
       
    Str_TableName=ID;   // 定义现在使用的表名
       
    // 设置表名的CSS
       
    for(var i=0;i<TableArray.length;i++)
       
    {
            killclass
    ("__Sys_TableName_"+TableArray[i]+"__","B");
       
    }
        $
    ("__Sys_TableName_"+ID+"__").className="B iLI";
    }
    /* 速度测试 */  
    function Show_SpeedTest()
    {
       
    var s="";
       
    var Str_Template="<LI><span class=TestMode><INPUT type=checkbox ID=__Sys_ST_$2__>&nbsp; $1</span><span Class=TestResult ID=__Sys_ST_Speed_$3__>&nbsp; </span><span Class=Testtips ID=__Sys_ST_Tips_$4__>&nbsp; </span></LI>";
       
    for(var i=0;i<Arr_connection.length;i++)
       
    {
            s
    +=Str_Template.replace("$1",Arr_connection[i]+" * "+(Int_AllNumber/Arr_connection[i])).replace("$2",i).replace("$3",i).replace("$4",i);
       
    }
       
    return s;
    }
    /* 执行速度测试 */
    function Execute_Test(ID,Dtm_Date)
    {
       
    if(isNull(Dtm_Date)){
           
    // 没有回传执行时间,第一次运行函数
           
    Int_ID=0;
            ID
    =Int_ID;
            $
    ("__Sys_ST_Button__").value="正在测试";
            $
    ("__Sys_ST_Button__").disabled=true;
            $
    ("hiddenframe").src="Json.php?id="+Str_TableName+"&do=Add&PostValue="+Arr_connection[ID]+"&PostFor="+(Int_AllNumber/Arr_connection[ID])+"";
       
    }else{
           
    Int_ID+=1;ID=Int_ID;
            $
    ("__Sys_ST_Speed_"+(ID-1)+"__").innerHTML=Dtm_Date;   //回传显示执行的时间
           
    if(ID<Arr_connection.length)
           
    {
                $
    ("hiddenframe").src="Json.php?id="+Str_TableName+"&do=Add&PostValue="+Arr_connection[ID]+"&PostFor="+(Int_AllNumber/Arr_connection[ID])+"";
           
    }else{
               
    //测试完成\
               
    var s="";
               
    for(var i=0;i<Arr_connection.length;i++)
               
    {
                   
    if(i>0){s+=",";}
                    s
    +=$("__Sys_ST_Speed_"+i+"__").innerHTML;
                    $
    ("__Sys_ST_"+i+"__").checked=false;
               
    }
               
    var a=eval("["+s+"];");
                s
    =Math.min.apply(null, a);
               
    for(var i=0;i<Arr_connection.length;i++)
               
    {
                   
    if($("__Sys_ST_Speed_"+i+"__").innerHTML==s)
                   
    {
                        $
    ("__Sys_ST_Tips_"+i+"__").innerHTML="最优结果,推荐采用";
                        $
    ("__Sys_ST_"+i+"__").checked=true;
                   
    }
               
    }
                $
    ("__Sys_ST_Button__").value="重新测试";
                $
    ("__Sys_ST_Button__").disabled=false;
           
    }
       
    }
    }

    //-->
    </SCRIPT>
    <!-- 本页面使用的前端函数 End -->
    <!-- 页面构造 页面风格定义 -->
    <Style>

    *{margin:0 auto;padding:0 auto;} 
    body
    ,html{width:100%;height:100%;min-width:960px;margin:0;padding:0;font-size:12px;font-family:"Tahoma,arial";}
    LI
    {DISPLAY: block; LIST-STYLE-TYPE: none;}
    UL
    {DISPLAY: block; LIST-STYLE-TYPE: none;}
    .quotetop{text-align:left;background: #E4EAF2;border: 1px dotted #8394B2;border-bottom: 0;border-left: 4px solid #8394B2;color: #003366;font-weight:700;font-size: 14px;margin: 8px auto 0 auto;padding: 3px;padding-left:10px;}
    .quotemain{text-align:left;background: #FAFCFE;border: 1px dotted #8394B2;border-left: 4px solid #8394B2;border-top: 0;color: #465584;padding: 5px;padding-left: 10px;margin: 0 auto 8px auto;height:auto;}
    .G{height:358px;overflow-x: hidden; overflow-y: auto;}
    .B{font-weight:700;color:#ff0000;}
    #Main{margin-left:auto;margin-right:auto;text-align:center;width:960px;border:1px #f00 solid;}
    H1
    {margin-top:10px;margin-bottom:0px;text-align:left;}
    H1 span
    {font-size:12px;}
    #M1 #M1L{float:left;width:320px;height:400px;}
    #M1 #M1R{float:left;padding-left:12px;width:628px;height:500px;}
       
    #M1R .M1R_L{float:left;width:100px;padding-top:50px;}
       
    #M1R .M1R_R{float:left;}
       
    #M1R UL{PADDING-RIGHT:0px;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;}
       
    #M1R UL LI{line-height:20px;width:100%;height:20px;margin-bottom:4px;}
       
    #M1R UL LI .TestMode{float:left;width:90px;display:block;}
       
    #M1R UL LI .TestResult{float:left;width:250px;display:block;}
       
    #M1R UL LI .Testtips{float:left;width:150px;display:block;}
    .iUL{PADDING-RIGHT:0px;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;}
    .iUL .iLI{text-align:left;padding-left:5px;height:25px;line-height:25px;CURSOR:pointer;margin-right:30px;BORDER-BOTTOM: #CCCCCC 1px dashed;}
    #__Sys_TableStructure__{height:200px;overflow-x: hidden; overflow-y: auto;line-height:20px;}
    #__Sys_Edit__{float:right;margin-top:10px;}

    </Style>
    <!-- 页面构造 HTML和JavaScript混和实现 -->
    <DIV ID=Main>

    <H1>数据库单元测试工具<span ID=__Sys_DB_Ver__></span><span ID=__Sys_Edit__>最后修改: 2014-3-4</span></H1>
    <DIV ID=M1>
       
    <DIV ID=M1L>
           
    <DIV Class=quotetop>数据表</DIV>
           
    <DIV Class="quotemain G">
               
    <UL Class=iUL>
                   
    <SCRIPT type="text/javascript">
                   
    <!--
                        dw
    (Show_Table());
                   
    //-->
                   
    </SCRIPT>
               
    </UL>
           
    </DIV>
       
    </DIV>
       
    <DIV ID=M1R>
           
    <DIV Class=quotetop>字段结构</DIV>
           
    <DIV Class="quotemain" ID=__Sys_TableStructure__>
           
    </DIV>
           
    <DIV Class=quotetop>填充数据的速度测试</DIV>
           
    <DIV Class="quotemain">
               
    <DIV Class=M1R_L>
                   
    <INPUT type=button value=进行测试 ID=__Sys_ST_Button__ onclick=Execute_Test();>
               
    </DIV>
               
    <DIV Class=M1R_R>
                   
    <UL>
                       
    <SCRIPT type="text/javascript">
                       
    <!--
                            dw
    (Show_SpeedTest());
                       
    //-->
                       
    </SCRIPT>
                   
    </UL>
               
    </DIV>
               
    <div style="clear:both;"></div>
           
    </DIV>
       
    </DIV>
    </DIV>
    <div style="clear:both;"></div>
    <iframe name="hiddenframe" id="hiddenframe" style="display:none;border:1;" width="600px" height="50px" ></iframe>

    </DIV>

    <!-- 一些初始化脚本 -->
    <SCRIPT type="text/javascript">
    <!--

    (function(){
       
    Show_Attrib(TableArray[0]);
        $
    ("__Sys_DB_Ver__").innerHTML=" 数据库版本: "+MysqlServerInfo;
        $
    ("hiddenframe").style.display="block";
    })();

    //-->
    </SCRIPT>

    下面是iYS_Function.js文件

    /*
    * iYS 前端 JavaScript 函数集合
    * 2014-3-4
    * Tony
    *

    */
    function $(s){return document.getElementById(s);}
    function dw(s){document.write(s);}
    function $$(s){return document.frames?document.frames[s]:$(s).contentWindow;}
    function $$$(s,m){return parent.left.document.getElementById(s).innerHTML=m;}
    function $c(s){return document.createElement(s);}
    function exist(s){return $(s)!=null;}
    function isNull(sVal){return (sVal==""||sVal==null||sVal=="undefined");}
    function hide(s){$(s).style.display=$(s).style.display=="none"?"":"none";}
    function swap(s,a,b,c){$(s)[a]=$(s)[a]==b?c:b;}
    function setCopy(sTxt){try{clipboardData.setData('Text',sTxt)}catch(e){}}
    function Systemkey(){}
    function killclass(oid,classname){

    with($(oid))
    className
    =className.replace(new RegExp("(^|\\s+)"+classname+"(\\s+|$)",'ig'),'');

    }

以下是预览效果,请确认排版好了再点回复。
如果你认为此话题有广告、灌水的嫌疑,请给此话题评一颗星。平均分低的话题将不会再显示。
良好的讨论氛围由大家共同维护。