background image

到的结果大吃一惊,原来问题出在一个与获得特定语言名字(例如

en 代表 english)的转换

代码的函数调用

 中,该函数在每个页面上都会被使用数百次。每次调用该函数时,脚本代

码都会对一个

MySQL

 

     

数据库

 

 

进行查询,从一个数据库表中获得真正的语言名字。

 是我们这一类的信息创建了一个缓冲系统。经过短短 2 天时间的工作,我们使系统的性

能得到了很大的提高,第一周内页面的浏览量也因此而增加了

40%。当然 了,这只是一个

有关分析代码能够提高互联网应用或互联网网站性能的例子。
性能测试函数调用

 分析一个脚本或网页(以及其包含文件)时,尽管 Benchmark_Timer()特别有用,但它

并不科学,因为要获得分析的数据我们必须多次加载脚本,

 而且它也不是针对某个类或函

数调用的。
PEAR::Benchmark 库中的另一个被称作 Benchmark_Iterator 的类能 够很好地解决这一个问
题,它能够针对特定的函数或类的方法,显示其分析信息。它的用途是能够能够从测试中获
得一致的结果,因为我们知道,如果运行一段脚本

 一次,其运行时间为 10 秒,并不意味

着它每次的运行时间总是

10 秒。

In any case, let's see some examples:
// 连接数据库的代码
include_once("DB.php");
$dsn = array(
'phptype' =>    'mysql',
'hostspec' =>    'localhost',
'database' =>    'database_name',
'username' =>    'user_name',
'pass

Word

' =>    'password'

);
$dbh = DB::connect($dsn);
function getCreatedDate($id)
{
global $dbh;
> $stmt = "SELECT created_date FROM users WHERE id=$id";
// 在这里使用 PEAR::DB
$created_date = $dbh-> getOne($stmt);
if ((PEAR::isError($created_date)) ||
(empty($created_date))) {
return false;
} else {
return $created_date;
}
}
include_once 'Benchmark/Iterate.php';
$bench = new Benchmark_Iterate;
// 运行 getDate 函数 10 次
$bench-> run(10, 'getCreatedDate', 1);
// 打印分析信息
print_r($bench-> get());