Mysql Veritabanı Bağlantısı Neden Sonlandırılmalı
Merhabalar arkadaşlar. Veritabanı bağlantısı oluştururken "null" kelimesini eklememiz gerekmesinin sebebi nedir acaba? Yani veritabanı bağlantısı açık kalmasın ki sistemi yormasın derler. Açık kalması sisteme nasıl bir yük getiriyor. Ve başka bir zararı var mıdır acaba? Mesela saldırılara karşı açık kapatma gibi tahmin ediyorum ama tam bilmiyorum. Bu arada aşağıdaki koda ben "null" eklemeden kod çalışıyor ama az önce "db=null" ekledim ve şu hatayı verdi.
"Fatal error: Uncaught Error: Call to a member function query() on null in C:\xampp\htdocs\site\slider.php:2 Stack trace: #0 C:\xampp\htdocs\site\index.php(16): include() #1 {main} thrown in C:\xampp\htdocs\site\slider.php on line 2"
<?php
<?php $db = new PDO("mysql:host=localhost; dbname=dernek; charset=utf8", "root", ""); $db = null; ?>
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (3)
sen sayfanın üzerinde DB bağlantısı yapıp da ardından hemen null kullanırsan sayfanın aşağılarında sorgu çalıştırmaya çalışırsan çalışmaz hata alırsın tabiki. null mutlaka kullan sonuçta kullandığın sistemin mysql ayarlarında bağlantı sayısı ve zaman aşımı süresi var. bunlar ne işe yarar dersen;
1) bağlantı sınırı (max_connection) : senin sisteminde her $db->connect olduğunda bir bağlantı açılır ve bu sınır diyelim ki sende 1000. aynı anda 1001 kişi girerse sistemin bağlantı hatası verir.
2) bağlantı zaman aşımı (connect timeout) : bu da sen eğer bağlantıyı kapatmazsan (null yapmazsan) ne kadar süre sonra aktif bağlantının kapanacağını belirler. bu süreyi azaltırsan uzun sorgularda timeout olursun, uzatırsan da kısa sorgularda boşuna bir bağlantı açık kalmış olur. sisteminde en iyiyi deneyerek bulursun.
yani bu durumda yapman gereken şey sayfanın üstünde db bağlantısı yapıp, sayfadaki tüm işler bitince yani sayfanın en altında $db = null yapman yeterli.
O halde "null" değerini footer'a yakın bir yerde "header" kısmının en alt kısımlarında falan vermek gerekli. Bir vidyoda gördüm veritabanı bağlantısının oluşturulduğu sayfada veriyordu "null" değerini. Başka bir vidyoda da "footer" a yakın bir yerde veriyordu. "null" verdiğimizde veritabanı bağlantısı oluşuyor ve hemen kapatılıyor. Bu durumda da sayfalar veritabanına bağlanamayınca da hata veriyor. "header" kısmının en altlarına yani bütün sorgular bittikten sonra koymak gerekli yani. Performans konusunda neredeyse hiç bilgim yok ama öğrenmek istediğim bir diğer konuda bu aslında. Tamam teşekkür ederim. :)
Performans konusunu bilmem.
performans konusunda dbye yük bindirmek istemiyorsan sürekli sorgudan veya sorgularda ne var ne yok herşeyi çekmek performansı etkiler.
SELECT `id`, `name`, `date` FROM `table_name`
yukarıda olduğu gibi sadece gerekli olanları çekmek.
eğer sürekli güncel verinin gelmesi önemli değilse cache kullanarak sürekli sorgudan kurtulursun.
$db
değişkeninine null
değeri verdikten sonra işlem yapamazsın.null
değeri vermeden önce sorguları yapman gerekir.