PHP Session’larını memcache üzerinde tutmak
PHP’de session session handler olarak default files gelir. Yani sunucu kendi dosya sisteminde tutar session bilgilerini.
Ancak birden fazla web sunucusunu paralel calistiran bir sistem kurduğunuzda bu olmaz. Çünkü session’ların ortak biryerde tutulması gerekir.
Bu duruma çözüm olarak veritabanınıza güveniyorsanız “db session” kullanabilirsiniz. Yani PHP session ları veritabanı üzerinde bir tabloda tutar. Hz.Google’da “php db session” yazarsanız bir çok döküman görebilirsiniz. PHP’nin session_set_save_handler fonksiyonu yardımıyla kolayca yapılır.
http://www.php.net/manual/en/function.session-set-save-handler.php
Bir de veritabaınına yük getirmek istemezseniz PHP session handler olarak “memcahce”i de kabul eder.
Bunun için yapılacaklar:
1. memcached ve php5-memcache paketleri kurulur. (Debian/Ubuntu da distroda var)
# apt-get install memcached
# apt-get install php5-memcache
2. php.ini dodyası içerisindeki
session.save_handler = files
satırı
session.save_handler = memcache
olarak değiştirilir.
3. php.ini ‘deki session.save_path değerine memcached server adresi ya da adresleri atanır.
Bu değer default olarak “/tmp” dir. Comment altında olabilir.
session.save_path = “tcp://server:11211”
server: memcached çalışan sunucu adresidir. apache yüklü olması gerekmez.
Örnek:
session.save_path = “tcp://192.168.10.179:11211”
4. apache restart edilir.
/etc/init.d/apache restart
Bu aşamdan sonra yeni session yapınız çalışacaktır.memcached kurulan server apache kurulu sunucu olabilir ya da aynı ağ üzerinden hızlı bağlantısı olduğu başka bir sunucu da olabilir.
Memcached server’lar birden fazla olabilir. Örneğin 4 sunuculu bir yapıda her sunucuyu aynı zamanda memcached server yapabilirsiniz. Her sunucuya yukarıdaki kurulumlar yapıldıktan sonra sadece php.ini ‘deki session.save_path değerini aşağıdaki gibi yazınız.
session.save_path = “tcp://192.168.10.179:11211, tcp://192.168.10.180:11211, tcp://192.168.10.181:11211, tcp://192.168.10.182:11211”
Artık 4 adet sunucu 4 adet memcached sunucu üzerinde session’ları tutacaktır. Eğer elinizde makinanız çoksa memcached sunucuları web sunucular dışında başka makinalar da yapabilirsiniz.
Artık son aşamada “memcached” in ayarlarını kendinize uyarlamak kaldı. memcached deamon’ı /ect/memcached.conf dosyasındakiş ayarlara göre çalışır.
– m : memory limitidir. Default değer 64M. Sunucu ram’inde allocate edebileceği maksimum rakamı belirler. Bunu ihtiyacınız ve sunucu ram büyüklüğüne göre kendiniz ayarlayacaksınız.
– p : deamon port değeri. Bunu php.ini de session.save_path değerine yazdık, dokunmuyoruz!
– l : Dinleyeceği ip adreslerini belirler. Memcached sunucunuzu herkes kullanmasın diye.
– c : Aynı andaki maksimum connection sayısıdır. Bu değer “- m” ile orantılıdır. Sisteminizin büyüklüğü ve kullanucu sayınıza göre ayarlanmalıdır. Default değer 1024 olup oldukça büyüktür.
Hayırlı olsun….sevgiler…:)
Recent Comments