teamtreehouse の PHP/MySQL プロジェクトのサンプル サイトをいじっています...「モデル」コードでは、products.php というファイル内の関数内にすべての DB 呼び出しがあります。これらの関数のそれぞれが新しい 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;
}
しかし、dbクエリがページの読み込みを大幅に遅らせていることがわかりました..
いくつかのグーグル検索の後、PDOコンストラクターに追加できる PDO::ATTR_PERSISTENT => true 属性を見つけました...そして、ページの読み込みを「通常」に高速化しました..
しかし、現実世界のシナリオでは、これは間違った/非効率的な方法ですか..? db 呼び出しを行うすべての関数呼び出し内で新しい PDO オブジェクトを作成するのではなく、PDO オブジェクトを開いて使用するより良い方法はありますか?