Question

i used webgrind and xdebug to messure my site performance. 85% of page loading time is taken for the function php::PDO->__construct (about 1 second) ...

this is unacceptable. can i somehow optimize this function? (caching, mysql configuration etc.)

i am using php, mysql and codeigniter with redbean. redbean uses that pdo construct function...

here is the function source code

/** 
 * 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; 
 } 
Was it helpful?

Solution

The solution is quite simple ...

PDO connecting to localhost -> 1 second

PDO connecting to 127.0.0.1 -> 50 miliseconds...

dont aks me why ... seems to have something to do with try & wait for ipv6 connection, then fall back to good old ipv4 ... the ipv4 adresse does not try ipv6 ...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top