Nerede ve ne zaman bir veritabanı bağlantısı açmak için

4 Cevap php

I here varolan komut bulunan mysql sınıfının kullanımı uygulama üzerinde çalışıyorum. Komut hemen hemen her zaman öyle değil zamanlar olsa bile, veritabanı ile etkileşim gerekiyor. Bu durumda en iyi yöntem nedir? Bir bağlantıyı açmak ve bıktığımda script gerek yoksa bir bağlantı açma önlemek için, kapatmadan, senaryonun sonuna kadar bu açık tutmak ya da bir ihtiyacınız olduğunda bir bağlantıyı açmak gerektiğine?

4 Cevap

Bağlantıları oldukça pahalı olduğundan, diğerleri işaret gibi, ben senin Veritabanı katmanında bir "tembel connect" tekniğini kullanarak öneriyoruz. Eğer etkili bir uygulama yapılandırılmış varsa, uygulama mantığınız bu veritabanı katmanı kapsüllü olacağı gibi bağlantıları açılır ve kapalı olduğunda ile ilgili olmamalıdır. Bir sorgu gerçekleştirmek istedi veritabanı katmanı, ilk olarak etkin bir bağlantısı vardır ve değilse, bir tane oluşturmak olmadığını görmek için kontrol. Bu şekilde kullanılan asla ve ayrıca uygulama ve veritabanı kodu arasında mantık güzel bir ayrılık olacak bağlantılarını açarak kaçınmak gerekir.

Eğer bir sınıf kullanıyorsanız eğer Eh, bağlantı sınıfı instaciate otomatik olarak açılır, ya da ilk sorgu yapıldığında yapılmalıdır. Eğer sınıfını kullanmak asla eğer, bağlantı açılmış olmaz. O bunu gerekmez zaman kapatmak için iyi bir uygulama iken, bu istek iplik öldüğünde kapalı izin için zarar vermez.

Php.ini dosyasında belirlenen bir kaynak sınırlarını yoksa bu kötü olabilir, istek olası bağlantıyı kapatmak sonsuza dek ve asla yaşayabilir.

Eğer yüksek trafik siteye bir ortam varsa, mysql_pconnect zaten açık bir bağlantı her zaman var yani ve her istek üzerine açılması biri yükünü gerekmez kullanma hakkında düşünme olmalıdır.

Genellikle sadece o bağlantıyı kullanmak gerekir zaman için bir veritabanı bağlantısı açmak isterdim. Açık bağlantıları tutulması kod parçası yanlışlıkla veya kötü niyetle başkalarının eylemleri aracılığıyla, istenmeyen sorgular veritabanı üzerinde yapılacaktır neden olacağını şansını artırabilir.

Eğer sorguları çalıştırmak istediğiniz önce bu durumda olmak, sadece bağlantıyı açmak gerekir. Eğer sorguları sayıda varsa, mümkün olduğu kadar geç süreçte bağlantısı açmaya çalışın.

Bu bir bağlantı birden fazla bağlantı açmak ve kapatmak için daha uzun süre sol açık olması daha iyidir.

Kodunuzu performans duyarlı ise, tercih edilen teknik, bir veritabanı bağlantısı açmak ve daha sonra yerine yeni bir açılış daha birçok sayfa isteklerine hizmet için bu bağlantıyı kullanabilirsiniz böylece bağlantı havuzu ve / veya kalıcı işlemlere çeşit kullanmak olma eğilimindedir bir ihtiyacı her istek için bağlantı.

Kodunuzu performans duyarlı değilse, o zaman gerçekten nasıl olsa farketmez.

Her iki şekilde de, veritabanı belirli bir istek işleme sırasında erişilen ne zaman tam zamanlaması endişe için bir neden o kadar büyük değil.

Benim kişisel bir uygulamadır, yeni bir işleyici süreç kökenli, o zaman ben her isteği işleme başladığınızda hala hayatta olduğunu doğrulamak hemen bir veritabanı bağlantısı açmak. Kodun geri kalanı sadece bir kullanıcı bir yanıt beklerken bağlantı maliyeti ödemeden gerektiğinde bağlantı kullanılabilir olduğunu varsayalım sonra ücretsizdir.