Kalıcı MySQL Bağlantısı
Bu
makalemde yoğun trafiğe sahip web sitelerinin kullanmasını tavsiye
ettiğim bir php fonksiyonunu anlatacağım sizlere. Bu fonksiyon
sunucuları büyük bir zahmetten kurtaracaktır. Bu vesile ile
sunucularınızda çıkan sorunlarıda azaltacağından sizleri de
rahatlatacaktır.
Bu fonksiyonun adı mysql_pconnect()‘dir. Bu fonksiyonun kulanım şekli mysql_connect() ile aynıdır.
<?php $baglanti = mysql_pconnect($vt_sunucusu, $vt_kullanici_adi, $vt_kullanici_sifresi); ?>
Bu
fonksiyonun fark açık kalmasıdır. Bildiğiniz gibi mysql_connect
fonksiyonunu her yeni sayfa geçişinde kullanmak durumundayız fakat bu
fonksiyonla bağlantı bir kere açılır. Yani bir kullanıcı sitenize gelir
mysql_pconnect ile sunucuya bağlanılır ve kullanıcı her sayfa gezdiğinde
yeni bir mysql bağlantısı açılmaz. Yani apache sayfa PHP’nizi
yorumladıktan sonra mysql sunucunuz kapatılmaz. Bir sonraki sayfada da
tekrar açılmaz. Kalıcı bağlantılar kalıcı olmayan bağlantılardan fazla
bir özelliğe sahip değildirler.
Kalıcı bağlantılar ek bir işlevselliğe sahip değilseler bunlar neden
tercih ediliyorlar, diye soranlar olabilir. Yanıtı oldukça basittir:
Verimlilik. SQL sunucunuza bağlantı açmak çok masraflıysa kalıcı
bağlantılar kurmak daha iyidir. Bu bedel gerçekte birçok sebebe bağlı
olabileceği gibi olmayabilir de. Bu, veritabanının, HTTP sunucunun
bulunduğu makinede olup olmamasından SQL sunucusunun makineye ne kadar
yük bindirdiğine kadar geniş bir yelpazede değerlendirilebilir. Son
değerlendirmede, eğer bu bedel yüksekse kalıcı bağlantıların büyük
ölçüde yardımı olacaktır. SQL sunucuya yapılan her bağlantı isteğinde
alt süreç sadece o sayfayı işleyeceği yerde, kalıcı bağlantı durumunda
her alt sürecin ömrü boyunca bir bağlantı kurmasına olanak tanınır.
Yani, bir kalıcı bağlantı açmış her alt sürecin kendine ait bir kalıcı
bağlantısı vardır. Örneğin, SQl sunucunuza kalıcı bağlantı açan
betiğiniz 20 ayrı alt süreç çalıştırıyorsa alt süreç başına bir tane
olmak 20 ayrı bağlantı var demektir.
Önemli Not: Ancak şuna dikkat edin,
bağlantı sayısı sınırlı bir veritabanını bu sınırın üstünde kalıcı
bağlantılarla kullanıyorsanız bunun bazı götürüleri olabilir. Eğer
veritabanınız aynı anda 16 bağlantılık bir sınıra sahipse ve çok meşgul
bir sunucu oturumunda 17 alt evre bağlantı açmaya çalışıyorsa biri bunu başaramayacaktır.
Eğer betiğinizde (sonsuz döngü gibi durumlarda) bağlantıların
kapatılmasına izin vermeyen hatalar varsa, veritabanı sadece 16 bağlantı
ile hızla batağa saplanacaktır.
Zaman aşımı vb. durumlarda mysql bağlantınız kapanacaktır. Bu tip
durumlarda mysql_ping ile kontrol edebiliriz. Bu fonksiyon mysql
bağlantısı kontrol ettiği gibi tekrar bağlanması için de çaba sarfeder.
Biz bunu daha etkili kılmak için şöyle bir yol izleyeceğiz:
<?php $vt = mysql_pconnect($sunucu, $kullanici, $sifre); if(!mysql_ping($vt)){ $vt = mysql_pconnect($sunucu, $kullanici, $sifre); } /* İşlemleriniz */ ?>
Bu şekilde amacımıza tam olarak ulaşmış oluyoruz. Yukarıdaki notu dikkate alarak bu fonksiyonu kullanabilirsiniz. Herkese kolay gelsin.
Yorumlar
Yorum Gönder