php-mysql

Kalıcı MySQL Bağlantısı

Sevgili TR Kodlama Ziyaretçileri,

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 bunubaş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,


Post Author: Oral ÜNAL

Web geliştirmeyi başta meslek olarak hayal eden fakat daha sonra bir hobi haline getiren birisiyim işte.

Yorum yazma sırası sizde!