SORU
26 Temmuz 2010, PAZARTESİ


PDO kalıcı bağlantı kullanmanın dezavantajları nelerdir

PDO, bir bağlantı sürekli PDO::ATTR_PERSISTENT özniteliği kullanılarak yapılabilir. Php kılavuzuna göre

Kalıcı bağlantılar yazısının sonunda kapalı, ama değil başka bir senaryo bağlantısı kullanarak istekleri önbelleğe ve yeniden kullanılır aynı kimlik bilgileri. Kalıcı bağlantı önbelleğini sağlar yeni bir bağlantı her zaman bir kurma yükünü önlemek komut dosyası bir veritabanı, hızlı bir web sonuçlanan konuşmaya ihtiyacı var uygulama.

Bu kılavuz ayrıca, ODBC Bağlantı Havuzu oluşturma süreci engel olabilir, çünkü PDO ODBC sürücüsü kullanırken kalıcı bağlantı kullanmak için değil önerir.

Görünüşe göre PDO kalıcı bağlantı kullanmanın dezavantajları, son durumu hariç var. Ancak., Eğer bu mekanizma, yani bu mekanizma, performansın düşmesine neden olur, bir durum ya da onun gibi bir şey kullanarak başka dezavantajları varsa bilmek isterim.

CEVAP
26 Temmuz 2010, PAZARTESİ


Ayrıntıları yolları sorunları burada özetlenen hafifletmek için this answer below okuyun lütfen.


Aynı sakıncaları var kullanarak PDO ile başka bir PHP veritabanı arayüzü bu mu kalıcı bağlantılar: eğer komut beklenmedik şekilde sona erdirir ortasında veritabanı işlemleri, sonraki istek alır kalan bağlantı kazanacak yerde ölü " sağdan sola. Bağlantı yapılan açık işlem yöneticisi (seviye Apache mod_php için, mevcut ağ herhangi bir işlem süreci kullanıyorsanız ağ herhangi bir işlem, vb.) değil de seviye PHP ve PHP söylemez üst işlemek için izin bağlantı ölünce komut anormal olarak sona erdirir.

Eğer ölü script tablolar kilitli, bu tabloları bağlantı ölene kadar kilitli kalır ya da bağlantı alır bir sonraki senaryoyu tabloları kendisi kilidini açar.

Eğer ölü senaryo olduğunu ortasında bir işlem, bu bloğu çok sayıda tablo kadar kilitlenme zamanlayıcı devreye girer, ve o zaman bile, kilitlenme zamanlayıcı öldürebilirsiniz, yeni isteği yerine eski istek neden olan sorun.

Eğer ölü senaryoyu bir işlemin ortasında olsaydı, bu bağlantı alır bir sonraki senaryoyu da devlet hareket alır. Çok mümkün (bağlı uygulama tasarım) bir sonraki komut değil aslında hiç denemek tamamlama mevcut işlem ya da öldürmek değil, ya da geri zaman değil.

Bu sadece buzdağının görünen kısmı. Her zaman her script isteği üzerine kirli bir bağlantı sonra temizlemeye çalışarak bir ölçüde hafifletilebilir olabilir, ama bu gerçekten acı bir veritabanına bağlı olabilir. Veritabanı bağlantıları oluşturma tespit olmadığı sürecebir şeyi bir performans sorunu varscript (kod profilleme xdebug ve/veya xhprof kullanarak yaptın demek) gerekirdeğilhiçbir şey için bir çözüm olarak kalıcı bağlantılar düşünün.

Ayrıca, en modern veritabanları (PostgreSQL de dahil olmak üzere) bağlantı havuzu gerçekleştirmek için kendi tercih ettikleri yöntemler hemen sakıncaları olmayan düz vanilya PHP tabanlı kalıcı bağlantılar.


Bir noktayı açıklığa kavuşturmak için, seçim tarafından iş yerimde, ama kalıcı bağlantılar kullanıyoruz. Karşılaşmış oldukgaripbağlantı bizim app ilk bağlantı veritabanı sunucusu için sunucu davranışı alıyordutam olarakbir ikinci bir kısmını bir kısmını almış olması gerekir, üç saniye. Çekirdek bir hata olduğunu düşünüyoruz. Yukarı rastgele oluyordu ve istek üzerine yeniden olamazdı çünkü bunu gidermek için çalışıyor verdik ve kendi izlerini takip ederek beton yeteneği yoktu dış kaynaklı.

Ne olursa olsun, ne zaman Millet depoya işleme birkaç yüz gelen parçalar ve her bir parçasını alarak üç buçuk saniye yerine yarım saniye, bir önlem almamız gerekiyordu önce kaçırdılar bizi ve bize yardım et. Yani, bizim üzerinde birkaç parça ev yapımı canavar ve kalıcı bağlantılar dehşeti tüm KKP/CRM/CMS deneyimli ilk elden attık. Bizi aldıhaftagörünüşte rastgele meydana gelen bütün ince küçük sorunlar ve garip davranışlar izini. Haftada-bir ölümcül hatalar kullanıcılarımızın özenle bizim app sıkılmış o kilitli tablolar, terk işlemleri ve diğer talihsiz bitkin Birleşik Devletleri terk olduğu ortaya çıktı.

Bu trajik hikayenin bir noktası vardır:Biz hiçbir zaman kırmak için, tüm performans adına beklenen şeyler kırıldı.Bedeli buna değer değildi ve hevesle normal bağlantılar için geri kullanıcılarımızın isyan etmeden değiştirebiliriz gün bekliyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Epic Tutorials for iPhone, iPad and iOS

    Epic Tutoria

    18 EYLÜL 2011
  • FamilyFeud

    FamilyFeud

    22 AĞUSTOS 2006
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011