max_user_connections hatası almak için güzel bir yol söyleyebilirim
PHP kodlarken veritabanı sorgularında kolaylık sağlasın diye SQL cümlemizi alıp sorgu sonucunu döndüren execSQL, execQuery vs gibi fonksiyonlar tanımlayıp kullanırız. Böylece her seferinde sunucu bağlantısı ve veritabanı seçimi ile uğraşmaktan kurtulmuş oluruz. Tabi kurallara uyan tertipli her programcı gibi fonksiyonun sonunda da mysql_close ile açtığımız bağlantıyı sonlandırmayı unutmayız. Aslında bazen unutmalıyız. Peki neden?
Benim kullandığım kod şuna benziyor:
function execSQL($sql) {
include(‘config.php’);
$conn = mysql_connect($DB_HOST, $DB_USERNAME, $DB_PASSWORD);
$db_selected = mysql_select_db($DB_DATABASE_NAME, $conn);
$result = mysql_query($sql, $conn);
mysql_close($conn);
return $result;
}
Bunun gibi bir fonksiyonun kullanıldığı ve SQL sorgularının yoğun olarak çalıştırıldığı bir proje üzerinde çalışıyorsanız şöyle bir hata mesajıyla karşılaşmanız fazla uzun sürmez:
User kullanici_adi has already more than ‘max_user_connections’ active connections
Bu mesajda veritananına PHP’nin ‘max_user_connections‘ ayarı ile belirlenenden daha fazla sayıda baÄŸlantı açıldığı belirtiliyor.
Benim örneÄŸimde bazı yoÄŸun sayfalar 100′ün üzerinde farklı sorgu çalıştırdığından kısa süreler içinde veritabanı sunucusuna onbillerce baÄŸlantı açılıp kapatılıyordu. Sorun aslında PHP’nin ve mysql_connect fonksiyonunun yeni baÄŸlantı açma davranışını bilmemekten geçiyor.
‘nin sayfasında da belirtildiÄŸi üzere mysql_connect daha önceden aynı argümanlarla (hostname, username) açılmış bir baÄŸlantı varsa yeni bir baÄŸlantı oluÅŸturmayarak mevcut olanı kullanıyor. Ancak siz özellikle mysql_close ile baÄŸlantıyı kapatmışsanız mutlaka sunucuya yeni bir baÄŸlantı kuruyor.
BaÄŸlantıları kapatmamak ilk bakışta iyi bir davranış olarak gözükmese de PHP’de bunun dez avantaj oluÅŸturacağı durumlar pek fazla deÄŸil. yazdığına göre bir PHP script’inin çalışması bittiÄŸinde tüm açılmış baÄŸlantılar zaten otomatik olarak kapatılıp yok ediliyor.
Sorgu çalıştırmanın dışında icra süresi uzun olan kodlarınız varsa mysql_close ile kapatmak iyi bir fikir. Ama bunun dışında mysql_close kullanmayı pek önermiyorum.
mysql_close kullanıp kullanmamayı anlık ortalama sayfa isteği ve kodlarda kullandığınız sorgu cümleleri ile max_user_connections arasında kuracağınız bir ilişkiyle belirleyebilirsiniz.
Yazan: Tankado
Turkish
English
Chinese

(1 votes, average: 9,00 out of 10)
tskler