我在搞乱teamtreehouse的PHP / MySQL项目中的一个示例站点......在他们的“模型”代码中,他们在一个名为products.php的文件中的函数内有所有数据库调用。这些函数中的每一个都将创建一个新的PDO通过导入包含文件来创建对象.. 例如:
function get_products_recent() {
require(ROOT_PATH . "inc/database.php"); //this instantiates a new PDO object called $db
try {
$results = $db->query("
SELECT name, price, img, sku, paypal
FROM products
ORDER BY sku DESC
LIMIT 4");
} catch (Exception $e) {
echo "Data could not be retrieved from the database. get_products_recent";
exit;
}
$recent = $results->fetchAll(PDO::FETCH_ASSOC);
$recent = array_reverse($recent);
return $recent;
}
但是我发现数据库查询显着减慢了页面加载速度..
经过一番谷歌搜索后,我发现 PDO::ATTR_PERSISTENT => true 属性可以添加到 PDO 构造函数中......并且这加快了页面加载速度回到“正常”......
但是对于现实世界的场景来说,这是错误/低效的做法吗..?有没有更好的方法来打开和使用 PDO 对象,而不是在每个进行 db 调用的函数调用中创建一个新的 PDO 对象?