【问题标题】:speed up php::PDO->__construct加快 php::PDO->__construct
【发布时间】:2013-02-16 03:30:01
【问题描述】:

我使用 webgrind 和 xdebug 来破坏我的网站性能。 该功能占用了 85% 的页面加载时间 php::PDO->__construct (大约 1 秒) ...

这是不可接受的。我可以以某种方式优化此功能吗? (缓存、mysql配置等)

我正在使用 php、mysql 和 codeigniter 与 redbean。 redbean 使用那个 pdo 构造函数...

这里是函数源代码

/** 
 * 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; 
 } 

【问题讨论】:

  • 如果这是不可接受的,那么想想你为什么这么多次调用 __construct 并从那里解决它。
  • 顺便说一句,字符集应该在DSN中设置
  • @YourCommonSense - 是的,但是两秒钟是不可接受的!!!!!!!!! ;-)

标签: php mysql pdo redbean


【解决方案1】:

解决方法很简单……

PDO 连接到 localhost -> 1 秒

PDO 连接到 127.0.0.1 -> 50 毫秒...

不要问我为什么...似乎与尝试和等待 ipv6 连接有关,然后回退到好的旧 ipv4...ipv4 地址不尝试 ipv6...

【讨论】:

  • 我的服务器上正好相反:“localhost”很快,“127.0.0.1”很慢。 (使用 PDO 和 MySQLi 测试)
猜你喜欢
  • 2020-03-02
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
相关资源
最近更新 更多