2014-10-29 127 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