Arkadaşlar merhaba, son birkaç gündür başımı ağrıtan bir sorun var. Projemde PDO ile MySQL veritabanına bağlanıyorum, ama bağlantı sürekli olarak belirli bir süre sonra zaman aşımına (timeout) uğruyor. Özellikle uzun süren sorgular veya sayfa yenilemeleri arasında birkaç dakika geçince "PDOException: SQLSTATE[HY000] [2002] Connection timed out" hatası alıyorum. Bağlantıyı her sayfada yeniden kuruyorum, yoksa kalıcı bir bağlantı (persistent connection) kullanmıyorum. Ama yine de bu sorunla karşılaşıyorum. Sunucu ayarlarında bir sıkıntı mı var, yoksa benim kodumda mı bir hata yapıyorum, emin olamadım.
Bağlantı kodumu şöyle yazıyorum: try bloğu içinde new PDO(...) ile bağlantıyı kuruyorum, ardından setAttribute ile hata modunu exception olarak ayarlıyorum. Ama bağlantı kurulduktan sonra, diyelim ki 30 saniye işlem yapmazsam, ya da bir sorgu çok uzun sürerse (örneğin 10 saniyelik bir join sorgusu), bağlantı kopuyor. PHP tarafında default_socket_timeout veya mysql.connect_timeout gibi ayarları değiştirmeyi denedim, ama pek işe yaramadı. Belki de sunucu tarafında MySQL'in wait_timeout veya interactive_timeout değişkenleriyle ilgili bir durum var. Sizce bu ayarları kontrol etmeli miyim, yoksa PDO'nun kendi içinde bir yapılandırma mı kaçırıyorum?
Bir de şöyle bir şey fark ettim: localhost üzerinde çalışırken sorun yok, ama projeyi paylaşımlı hostinge yükleyince başladı. Hosting firmasıyla iletişime geçtim, "sorun yok, ayarlar standart" dediler. Ama ben hala aynı hatayı alıyorum. Acaba PDO bağlantı dizesine timeout değerini parametre olarak eklemek mümkün mü? Ya da try-catch içinde bağlantıyı tekrar denemek için bir döngü kursam, bu geçici bir çözüm olur mu? Sizler nasıl bir yol izliyorsunuz, benzer bir sorun yaşayan var mı? Yardımlarınızı bekliyorum.
Bağlantı kodumu şöyle yazıyorum: try bloğu içinde new PDO(...) ile bağlantıyı kuruyorum, ardından setAttribute ile hata modunu exception olarak ayarlıyorum. Ama bağlantı kurulduktan sonra, diyelim ki 30 saniye işlem yapmazsam, ya da bir sorgu çok uzun sürerse (örneğin 10 saniyelik bir join sorgusu), bağlantı kopuyor. PHP tarafında default_socket_timeout veya mysql.connect_timeout gibi ayarları değiştirmeyi denedim, ama pek işe yaramadı. Belki de sunucu tarafında MySQL'in wait_timeout veya interactive_timeout değişkenleriyle ilgili bir durum var. Sizce bu ayarları kontrol etmeli miyim, yoksa PDO'nun kendi içinde bir yapılandırma mı kaçırıyorum?
Bir de şöyle bir şey fark ettim: localhost üzerinde çalışırken sorun yok, ama projeyi paylaşımlı hostinge yükleyince başladı. Hosting firmasıyla iletişime geçtim, "sorun yok, ayarlar standart" dediler. Ama ben hala aynı hatayı alıyorum. Acaba PDO bağlantı dizesine timeout değerini parametre olarak eklemek mümkün mü? Ya da try-catch içinde bağlantıyı tekrar denemek için bir döngü kursam, bu geçici bir çözüm olur mu? Sizler nasıl bir yol izliyorsunuz, benzer bir sorun yaşayan var mı? Yardımlarınızı bekliyorum.