2014-10-29 115 views
-1

我今天试射PDO的表现是这样的:PDO对象性能

<?php 
$start = microtime(true); 
new PDO("mysql:host=localhost;dbname=mw", 'root', ''); 
$stop = microtime(true); 
echo $stop - $start; 

,结果是相当令人吃惊

ELLAPSED(在我的Windows 8.1笔记本电脑本地运行):1.0117259025574

在一个脚本执行,我将PDO对象缓存在一个静态变量中,所以我不必为另一个查询创建一个新的。 但是这种缓存方法只在脚本执行期间有效。

我的脚本运行在1.25秒其中1.01用于创建PDO对象。 有没有办法为整个会话或多个用户缓存PDO对象?

我错过了什么吗?

+5

这不是上运行的基准测试环境的类型。 – 2014-10-29 13:10:07

+0

它*可能*也是使操作变慢的数据库。这里有太多的移动部件可以肯定地说出任何事情。在我的常规环境中,速度肯定会快很多。 – deceze 2014-10-29 13:13:51

+1

在我5岁的Win7笔记本电脑上运行你的代码(这是非常低规格的开始)返回像'0.00019407272338867'这样的值。缓存PHP对象不应该是你的出发点。什么时候你得到一个非常简单的'for($ i = 1; $ i <= 1000000; $ i ++){\t}'? – rjdown 2014-10-29 13:41:27

回答

2

我测试了我的服务器上相同的代码,并与数据库连接通过PDO。

$开始时间1414590258.7735 $结束时间为1414590258.7736 和$结束时间$开始时间为0.0001530647277832

我的代码是

enter code here 
$start = microtime(true); 
new PDO("mysql:host=$mysqlnd_appname1;dbname=$db1",$user1,$pass1); 
$stop = microtime(true); 
echo($start); 
echo "<br />"; 
echo $stop; 
echo "<br />"; 
echo $stop - $start; 

所以它的PDO连接性能良好,其还取决于你的服务器以及我的sql服务器如何响应你的php服务器。 更多详情,请访问该http://archive.jnrbsn.com/2010/06/mysqli-vs-pdo-benchmarks