SevkiBilge

PHP'de PDO ile MySQL bağlantısı neden sürekli zaman aşımına uğruyor?

HalukKurtMr
· 2 gün önce · 0 görüntülenme
Arkadaşlar merhaba, uzun süredir PHP ile proje geliştiriyorum ve PDO kullanarak MySQL bağlantısı kuruyorum. Ama son zamanlarda can sıkıcı bir sorunla karşılaştım: bağlantı sürekli zaman aşımına uğruyor. Özellikle uzun süren sorgularda veya gece çalışan cron işlerinde bu sorun baş gösteriyor. Normalde localhostta her şey yolunda ama sunucuda işler değişiyor. Bağlantı ayarlarımı kontrol ettim, PDO::ATTR_TIMEOUT değerini 30 saniyeye çıkardım ama hala aynı. Hata mesajı olarak "SQLSTATE[HY000] [2002] Connection timed out" alıyorum. Bu sorunu yaşayan var mı? Acaba MySQL sunucu tarafında bir ayar mı kaçırıyorum, yoksa PDO'nun kendine özgü bir püf noktası mı var?

Bir de dikkatimi çeken şey, bağlantıyı her seferinde yeniden kurmaya çalıştığımda bu sorun daha sık oluyor. Aslında uzun ömürlü bir bağlantı kullanmak istiyorum, PDO::ATTR_PERSISTENT ile kalıcı bağlantıyı aktifleştirdim. Ama bu sefer de sunucu kaynakları tükenmeye başladı, bir süre sonra "Too many connections" hatası almaya başladım. Yani iki ucu boklu değnek gibi bir durum. Sizce kalıcı bağlantı mı kullanmalıyım yoksa her istekte yeni bağlantı mı açmalıyım? İkinci durumda bu zaman aşımı sorununu nasıl aşabilirim? Özellikle paylaşımlı hosting kullananlar varsa, onların deneyimlerini merak ediyorum.

Son olarak, bağlantı zaman aşımı sorununun kaynağını tam olarak bulamadım. Acaba MySQL sunucumun wait_timeout veya max_execution_time ayarlarıyla mı ilgili? Yoksa PHP'nin kendi max_execution_time değeri mi burada devreye giriyor? Bir de PDO'nun hazırladığı sorguları çalıştırırken fetch modu veya buffered query kullanımı etkili oluyor mu? Uzun metin veya BLOB alanları çeken sorgularda bu sorun daha belirgin hale geliyor. Veritabanı optimizasyonu yapmalı mıyım, yoksa bağlantı yönetimiyle ilgili başka bir strateji mi izlemeliyim? Fikirlerinizi ve çözüm önerilerinizi bekliyorum, teşekkürler.
0 yanıt

Henüz yanıt bulunmuyor. İlk yanıtlayan siz olun!

Yanıt yazmak için giriş yapın.