Arkadaşlar merhaba, son birkaç gündür canımı oldukça sıkan bir sorunla karşı karşıyayım. Projemi localhost'tan canlı sunucuya taşıdıktan sonra PDO ile MySQL bağlantısında sürekli timeout hatası almaya başladım. Normalde local'de hiçbir sıkıntı yoktu, her şey saat gibi çalışıyordu ama sunucuya geçince "SQLSTATE[HY000] [2002] Connection timed out" hatasıyla karşılaşıyorum. Bağlantı parametrelerini defalarca kontrol ettim, host, port, kullanıcı adı ve şifre doğru görünüyor. Özellikle yoğun sorgular göndermediğim, sadece basit bir select işlemi yaptığım durumlarda bile bu hata pat diye çıkıyor. Acaba sunucu tarafında bir ayar mı kaçırdım yoksa PDO ayarlarımda mı bir eksik var? Bu konuda deneyimi olan var mı?
Bir de şu detayı ekleyeyim: Bağlantıyı kurarken PDO'nun ATTR_TIMEOUT özelliğini 30 saniye olarak ayarladım ama hata genelde 5-10 saniye içinde düşüyor. Yani timeout süresiyle ilgili bir tutarsızlık var gibi geliyor. Ayrıca sunucuda başka bir PHP scriptiyle MySQL'e komut satırından bağlanmayı denedim, orada herhangi bir sorun yok. Yani sorun tamamen PDO'nun bağlantı kurma aşamasında yaşanıyor. DNS çözümlemesiyle ilgili olabilir mi? Ya da sunucunun güvenlik duvarı PDO'nun kullandığı portu mu kısıtlıyor? Bu konuda fikri olan varsa çok sevinirim.
Son olarak, bu hatayı alırken error_log'u inceledim ama çok açıklayıcı bir bilgi göremedim. Sadece "Connection timed out" yazıp geçiyor. Belki de sunucu yöneticisiyle görüşüp MySQL'in bekleme sürelerini (wait_timeout, interactive_timeout) kontrol ettirmeliyim. Ama yine de emin değilim, çünkü basit bir bağlantıda bile sorun çıkıyorsa bu ayarların çok da etkili olacağını sanmıyorum. Sizce PDO'nun bağlantı dizesinde bir yanlışlık mı var? Yoksa alternatif olarak mysqli kullanmayı mı denemeliyim? Tecrübelerinizi paylaşırsanız çok makbule geçer. Gerçekten sinir bozucu bir durum, umarım bir çözüm bulabiliriz.
Bir de şu detayı ekleyeyim: Bağlantıyı kurarken PDO'nun ATTR_TIMEOUT özelliğini 30 saniye olarak ayarladım ama hata genelde 5-10 saniye içinde düşüyor. Yani timeout süresiyle ilgili bir tutarsızlık var gibi geliyor. Ayrıca sunucuda başka bir PHP scriptiyle MySQL'e komut satırından bağlanmayı denedim, orada herhangi bir sorun yok. Yani sorun tamamen PDO'nun bağlantı kurma aşamasında yaşanıyor. DNS çözümlemesiyle ilgili olabilir mi? Ya da sunucunun güvenlik duvarı PDO'nun kullandığı portu mu kısıtlıyor? Bu konuda fikri olan varsa çok sevinirim.
Son olarak, bu hatayı alırken error_log'u inceledim ama çok açıklayıcı bir bilgi göremedim. Sadece "Connection timed out" yazıp geçiyor. Belki de sunucu yöneticisiyle görüşüp MySQL'in bekleme sürelerini (wait_timeout, interactive_timeout) kontrol ettirmeliyim. Ama yine de emin değilim, çünkü basit bir bağlantıda bile sorun çıkıyorsa bu ayarların çok da etkili olacağını sanmıyorum. Sizce PDO'nun bağlantı dizesinde bir yanlışlık mı var? Yoksa alternatif olarak mysqli kullanmayı mı denemeliyim? Tecrübelerinizi paylaşırsanız çok makbule geçer. Gerçekten sinir bozucu bir durum, umarım bir çözüm bulabiliriz.