2013-03-01 17 views
5

webgrindとxdebugを使ってサイトのパフォーマンスを向上させました。 関数のページ読み込み時間の85%が取得されます php :: PDO - > __構文(約1秒)...スピードアップphp :: PDO - > __構築

これは受け入れられません。何とかこの機能を最適化できますか? (キャッシング、mysql設定など)

私はphp、mysql、codeigniterを赤豆で使っています。機能を構築PDO redbean用途...ここ

が関数のソースコードが

/** 
* Establishes a connection to the database using PHP PDO 
* functionality. If a connection has already been established this 
* method will simply return directly. This method also turns on 
* UTF8 for the database and PDO-ERRMODE-EXCEPTION as well as 
* PDO-FETCH-ASSOC. 
* 
* @return void 
*/ 
public function connect() { 
    if ($this->isConnected) return; 
    $user = $this->connectInfo['user']; 
    $pass = $this->connectInfo['pass']; 
    //PDO::MYSQL_ATTR_INIT_COMMAND 
    $this->pdo = new PDO( 
       $this->dsn, 
       $user, 
       $pass, 
       array(1002 => 'SET NAMES utf8', 
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 

       ) 
    ); 
    $this->pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, true); 
    $this->isConnected = true; 
} 
+0

それが受け入れられない場合は、__constructを何度も呼び出す理由を考えて、そこから解決してください。 –

+4

[Googleは素晴らしいです。私は2秒かかった](http://stackoverflow.com/questions/9800577/why-is-constructing-pdo-connection-slow) –

+2

BTW、charsetはDSN –

答えて

7

ソリューションは非常に簡単です...ローカルホストへの接続

PDO - > 1秒

PDO 127.0に接続します.0.1 - > 50 miliseconds ...

なぜ私は...と試して何かをしているように思われる& ipv6接続を待ってから、古いipv4に落ちる... ipv4アドレスは試していないipv6 ...

0

あるPDOは、ビルドであるので...それは可能な限り高速でなければなりません。同じサーバー上にあるMySqlサーバーですか、それとも他のどこかのリモートホストですか?また、mysql_connectには同じ接続時間がかかりましたか? 私もRedbeanを使用していますし、それをinitに< 0.01秒だ...