PHP PDO Önbellekleme

3 Cevap php

Buna bir cevap arıyordum ettik ama hiçbir yerde bulamadım. Ben aşağıdaki yoksa PDO aramalar ::) önbelleğe (hazırlamak, ya da ben yani, sonuç kendimi önbelleğe

function foo () {
  $handle = PDO::prepare(...);
  /* do stuff with the handle */
}

hızla, üçüncü vs kez ikinci alınır o kadar hazırlayacaktır () deyimi PDO tarafından önbelleğe? Ya da kendim yapmak daha iyidir, mesela

function foo() {
  static $handle = null;
  if (!$handle) {
    $handle = PDO::prepare(...);
  }
  /* do stuff with the handle */
}

3 Cevap

MySQL query cache bulunmaktadır. Ama genel olarak kesinlikle hazır deyimi için tanımlayıcı tutmak ve yeniden kullanmak gerekir.

PDO::prepare() (hatta aynı SQL sorgusu ile) özellikle bunu için geçerli olabilir, önceki ve mevcut bağları arasında, çarpışmaları önlemek için iki farklı PDOStatement (ya da kolları) dönmelidir için iki sonraki çağrılar. prepare() ile PDOStatement oluşturma maliyeti yine düşüktür. Eğer önbelleğe isteyebilirsiniz ne sonuç () çiğ veya hazırlamak tarafından inşa ya, aynı SQL sorgusundan dönen ve bu DBMS (örneğin MySQL) bir özellik değil, PHP vardır.

Bu veritabanı sürücüsüne bağlıdır. MySQL ile PDO varsayılan bir yerli hazırlanmış deyimi yaratacaktır. Eğer gerçek bir sorgu önbelleği kullanmak istiyorsanız, bunu devre dışı bırakabilirsiniz.

Kesinlikle tekrar tekrar aynı sorguyu yürütmek gerekiyorsa, o zaman evet, o etrafında ele tutmak isteyeceksiniz. Eğer taklit hazırlanmış deyimleri kullanarak ediyorsanız, o zaman hiç fark etmez.