Arkadaşlar merhaba, uzun süredir PHP ile proje geliştiriyorum ve son zamanlarda PDO ile çoklu veritabanı bağlantısı yönetirken ciddi bir performans sorunuyla karşılaştım. Projemde aynı anda 3 farklı MySQL veritabanına bağlanmam gerekiyor. Her biri için ayrı PDO nesneleri oluşturuyorum ve sorguları bu bağlantılar üzerinden gönderiyorum. Normal şartlarda çalışıyor ama sayfa yükleme süreleri 5-6 saniyeyi bulmaya başladı. Özellikle birden fazla bağlantı üzerinden ardışık sorgular çalıştırdığımda gözle görülür bir yavaşlama oluyor. Bağlantıları her sayfada yeniden kuruyorum, belki de bu yüzden kaynak tüketimi artıyor olabilir.
Başlangıçta her veritabanı için singleton pattern kullanarak tek bir bağlantı örneği oluşturmayı denedim ama bu sefer de farklı veritabanları arasında geçiş yaparken karışıklık yaşadım. Örneğin, bir işlem sırasında önce veritabanı A'ya sorgu atıp sonra veritabanı B'ye geçiyorum, ama bağlantılar bazen karışıp yanlış veritabanına sorgu gönderiyor. Sanırım bağlantı havuzu (connection pooling) gibi bir çözüm işe yarayabilir, ama PHP'de bunu nasıl sağlıklı bir şekilde uygulayabilirim? Yoksa PDO'nun kendi içinde bir mekanizması mı var, onu mu kaçırıyorum?
Ayrıca, uzun süreli bağlantılar (persistent connections) kullanmayı düşündüm, ancak bunun da bazı hosting ortamlarında sorun çıkardığını duydum. Özellikle aynı anda gelen birden fazla istekte bağlantıların kilitlenmesi veya zaman aşımına uğraması gibi durumlar olabiliyormuş. Siz bu tür bir senaryoda nasıl bir yaklaşım önerirsiniz? Proje büyüdükçe bu yavaşlama daha da kötüleşecek gibi hissediyorum, acaba bağlantıları tek bir yerde toplayıp lazy loading mi yapsam, yoksa tamamen farklı bir mimariye mi geçmem gerekir? Deneyimlerinizi ve çözüm önerilerinizi merak ediyorum.
Başlangıçta her veritabanı için singleton pattern kullanarak tek bir bağlantı örneği oluşturmayı denedim ama bu sefer de farklı veritabanları arasında geçiş yaparken karışıklık yaşadım. Örneğin, bir işlem sırasında önce veritabanı A'ya sorgu atıp sonra veritabanı B'ye geçiyorum, ama bağlantılar bazen karışıp yanlış veritabanına sorgu gönderiyor. Sanırım bağlantı havuzu (connection pooling) gibi bir çözüm işe yarayabilir, ama PHP'de bunu nasıl sağlıklı bir şekilde uygulayabilirim? Yoksa PDO'nun kendi içinde bir mekanizması mı var, onu mu kaçırıyorum?
Ayrıca, uzun süreli bağlantılar (persistent connections) kullanmayı düşündüm, ancak bunun da bazı hosting ortamlarında sorun çıkardığını duydum. Özellikle aynı anda gelen birden fazla istekte bağlantıların kilitlenmesi veya zaman aşımına uğraması gibi durumlar olabiliyormuş. Siz bu tür bir senaryoda nasıl bir yaklaşım önerirsiniz? Proje büyüdükçe bu yavaşlama daha da kötüleşecek gibi hissediyorum, acaba bağlantıları tek bir yerde toplayıp lazy loading mi yapsam, yoksa tamamen farklı bir mimariye mi geçmem gerekir? Deneyimlerinizi ve çözüm önerilerinizi merak ediyorum.