【发布时间】: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 - 是的,但是两秒钟是不可接受的!!!!!!!!! ;-)