SevkiBilge

Pdo ile mysql bağlantısında sürekli zaman aşımı hatası alıyorum

MuzeyyenOkumusOne769
· 4 gün önce · 2 görüntülenme
Arkadaşlar merhaba, son birkaç gündür projemde PDO ile MySQL bağlantısı kurarken can sıkıcı bir zaman aşımı sorunu yaşıyorum. Normalde localhostta sorunsuz çalışan kod, sunucuya yüklediğimde sürekli "Connection timed out" hatası veriyor. Bağlantı ayarlarını kontrol ettim, host, kullanıcı adı, şifre ve veritabanı ismi doğru görünüyor. PhpMyAdmin üzerinden manuel olarak bağlanabiliyorum, yani sunucu çalışıyor. Ama PDO ile bağlanmaya çalıştığımda 30 saniye kadar bekleyip zaman aşımına uğruyor. Bağlantı dizesinde timeout değerini değiştirmeyi denedim, hatta PDO::ATTR_TIMEOUT ayarını 5 saniyeye indirdim ama yine de aynı sorun. Acaba sunucu tarafında bir güvenlik duvarı mı var yoksa PDO'nun MySQL ile iletişiminde bir versiyon uyumsuzluğu mu var? Bu konuda başına gelen veya çözüm bilen var mı?

Sunucu bilgilerini de vereyim, belki bir ipucu çıkar: PHP 7.4 sürümü kullanıyorum, MySQL ise 5.7. PDO sürücüleri yüklü ve phpinfo'da görünüyor. Ayrıca bağlantıyı denediğim kod basit bir try-catch blogu içinde, hatayı yakalayıp ekrana basıyorum. Ama garip olan şu ki, aynı sunucuda başka bir projede eski usul mysql_connect ile bağlanabiliyorum. Yani MySQL servisi tamamen kapalı değil. Sadece PDO ile ilgili bir problem var gibi. Sunucu sağlayıcıma da sordum ama "sorun yok" dediler. Bu durumda PDO ayarlarında mı bir eksiklik var yoksa başka bir yerde mi hata yapıyorum?

Bir de şunu fark ettim: Bazen ilk bağlantı denemem başarısız oluyor ama hemen ardından tekrar denediğimde çalışıyor. Bu da bana bir tür bağlantı havuzu sorunu veya DNS çözümleme gecikmesi gibi geliyor. Ama emin değilim. Sizce PDO bağlantı dizesinde Unix socket kullanmak mı daha iyi olur, yoksa TCP/IP ile devam mı etmeliyim? Sunucuda socket dosyasının yolunu da kontrol ettim, varsayılan /var/run/mysqld/mysqld.sock orada duruyor. Deneyimli arkadaşlar varsa bir el atsın, gerçekten çıldırtmaya başladı bu hata.
1 yanıt
CanArasMax
3 gün önce
Dostum aynı sorunu bende çok yaşadım, büyük ihtimalle PDO'nun varsayılan timeout değeri düşük kalıyor. Bağlantı kurarken PDO::ATTR_TIMEOUT ayarını 30 saniye veya daha yukarı çekmeyi dene, genelde çözüm bu oluyor.

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