在设计的 php 生成静态页面中,静态页面越来越多,在不断的执行生成 html 的过程中,效率越来越慢,所以优化 php 语句就变得刻不容缓了,先检查了自己之前写的 php 生成 html 的程序,原来就是直接的循环,没有附加任何的优化,先看一下夏日博客之前的 PHP 循环语句:
12345678910111213141516171819 $stat = time();
for($i=1;$i<=10000;$i++){
$strTemp = $strTemp."<option value='".$i."'";
$strTemp=$strTemp.">第".$i."页</option>";
}
$end = time();
echo $end-$stat;
这个循环只是把 php 生成静态语句给简化来了,主要了解一下循环生成的效率时间,具体的生成 html 这里就不具体讲解了,可以参看以前夏日博客的文章,这里是使用 php 执行循环 10000 次,如果变成 10000 00 之后呢,循环的速度会越来越慢,echo 出来的秒数也会越来越大,最后的解决方法就是将这段 PHP 循环语句进行简单的改造,如下:
123456789101112131415 $stat = time();
$strTemp = '';
for($i=1;$i<=10000;$i++){
$strTemp .= "<option value='".$i."'";
$strTemp .= ">第".$i."页</option>";
}
$end = time();
echo $end-$stat;
再次运行,不需要一秒的时间,时间效率非常的快,通过两(www.111cn.net)段代码的对比可以看出,第一段是在每执行一次循环再重新赋值,要赋值 10000 次,速度肯定会慢,而第二段代码则是通过 点 的符号将值直接连接成一个字符串,只进行一次赋值就可以了,所以效率很高,我们可以把后面的代码放在任何执行多次的循环语句中,比如 php 生成多条 html 的时候。
实现代码如下:
123456789101112131415161718 <?php
$Stime=0;
$Etime=0;
$Ttime=0;
$Stime=microtime(true);//获取程序开始执行的时间
//echo $Stime."<br/>";
for ($i=1;$i<=10000000;$i++){} //为了实现有一定的时间差,所以用了一个FOR来消耗一些资源.
$Etime=microtime(true);//获取程序执行结束的时间
//echo $Etime."<br/>";
$Ttime=$Etime-$Stime;//计算差值
//echo $Ttime."<br/>";
$str_total=var_export($Ttime,TRUE);
if(<A href="/tags.php/substr/" target=_blank>substr</A>_count($str_total,"E")){ //为了避免1.28746032715E-005这种结果的出现,做了一下处理.
$float_total=floatval(substr($str_total,5));
$Ttime=$float_total/100000;
}
echo $Ttime.'秒';
?>
百恒开发工程师在对相关函数进行介绍:
microtime() 函数返回当前 Unix 时间戳和微秒数。
var_export() 函数返回关于传递给该函数的变量的结构信息,它和 var_dump() 类似,不同的是其返回的表示是合法的 PHP 代码。
substr_count() 函数计算子串在字符串中出现的次数。
from:http://www.111cn.net/phper/php/93785.htm