我刚刚升级了开发机上的Apache和PHP版本,PDO完全崩溃了。
这是一个非常简单的PDO类:
class PDO_DBH {
public static function openSesame() {
echo '<p>start openSesame: </p>'.microtime(true);
$db_username = 'root';
$db_password = 'pass';
try {
$dbh = new PDO('mysql:host=localhost;dbname=DB_NAME', $db_username, $db_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
echo '<p>end successful openSesame: </p>'.microtime(true);
return $dbh;
} catch (PDOException $e) {
echo '<p>end failed openSesame: </p>'.microtime(true);
return 'PDO database access error!';
}
}
}
在升级之前,以及其他开发机器上,一个典型的页面加载时间为一秒钟,最多两秒钟。
现在,通过神奇的
microtime(true)
,我发现每个连接的打开需要大约一秒钟的时间。一个典型的页面可能会创建一个新的
$dbh
,然后将其20次$dbh = null;
作为不同的对象和方法检索他们需要的数据。这在其他机器或我的Web主机上从未成为问题。我错在哪里了?
127.0.0.1
而不是localhost
,会有什么影响呢?我敢打赌这应该会有所帮助;-) - zerkmsthrow $e;
而不是返回错误字符串。千万不要丢弃异常。另外,请问这个操作系统是什么? - Phil$e
,我在剪切和粘贴代码时简化了它,因为我认为那一部分并不重要,实际脚本中我已经有一个处理程序了。感谢你的关心。 :-) - Drew