Merhaba Arkadaşlar; Memcache Nedir Temel Kullanım Alanları Nelerdir Bende Bilmiyordum Ama Bir Kaç Kaynak Siteden Edinebildiğim Bilgileride Bu Sayfada Bir Başlıkta Toplamak İstedim Belki Faydalı Olabilirim Diye.
Memcache Nedir?
Memcache, yüksek trafikli web sitelerinin sıklıkla başvurduğu tampon bellek kullanma sisteminin adıdır. Facebook yazılım mühendisleri tarafından geliştirilmeye devam ediliyor. Şu an dünya ölçeğinde Memcache en etkin kullanan web sitesi doğal olarak facebook’tur.
Memcache Neden kullanılıyor?
Bu sorunun en az 2 cevabı var diyebiliriz:
1- Ram fiyatları, işlemci fiyatlarından daha ucuzdur. (Sunucu yükünü azaltmak için)
2- Ram bellekler, hardisklerden daha hızlı veri okurlar. (Performans için)
Herkes Memcache kullanabilir mi?
Share hosting’de barındırılan bir siteniz varsa %99 paylaşımlı sunucu hizmetini aldığınız yer sunucuya Memcache modülünü kurmamıştır.
Share Hosting Paketlerinde Neden Memcache Modülü kurmuyorlar?
Memcache Ram bellek üzerinde işlem yapar. Eğer hosting firması share hosting sunucusuna kurarsa, kodlama konusunda acemi bir müşteri
sunucu Ram belleklerinin anasını ağlatabilir. Diğer müşteriler mağdur olurlar. Risk almak istemedikleri için share hosting hizmeti aldığınız yerde Memcache kurulu değildir.
Kendime ait Sunucum var Memcache kurmalı mıyım?
Yüksek hit alan siteniz var, CPU kullanımınız yüksek ise, sayfanız daha hızlı açılsın istiyorsanız kesinlikle kurmalısınız.
Memcache Nasıl kurulur.
“İnsanlar linux’un daha iyi olduğunu bilir ama uygulamalarını Windows ortamında geliştirir” felsefesine katılan biri olarak, Windows 7 işletim sistemi yüklü bilgisayarınıza nasıl kurulum yapılacağını kısaca anlatmak istiyorum. Yazdığınız uygulamayı memcache ile entegreyi localhostunuzda tamamlayın, sunucunuza zaten hosting firması kurulum yapar.
indirmemiz gereken 2 dosya var.
1.ci dosyamız php extension için gerekli olan dll dosyası.
Eğer bilgisayarınızda php 5.3.x varsa buradan
Eğer bilgisayarınızda php 5.2.x varsa özellikle appserv vs kullananlar için dll dosyası buradan
2.ci Memcached.exe dosyası buradan
Memcached.rar dosyasını c:\memcached\ klasörüne açın.
c:\memcached klasörünün içinde Shift + sağ click mouse yapıp açılan menüden komut penceresini burada aç bölümünü seçelim. (cmd.exe açmanın kısayolu)
Önce şu kodu:
memcached.exe -d install
Sonra şu komutu yazın:
memcached.exe -d start
Sonraki işlem adımımız:
indirdiğimiz dll dosyasını php extension klasörüne kopyalamak. Appserv kullananlar için:
D:\AppServ\php5\ext\ yada siz nereye kurduysanız içine kopyalayın.
Daha sonra C:\WINDOWS\php.ini dosyasına extension=php_memcache.dll satırı varsa önündeki noktalı virgülü kaldırın.
extension=php_memcache.dll satırı yoksa bunu ekleyin.
Apache reboot edince kurulum tamamlanmış olacaktır. Bilgisayarı reboot ederseniz daha iyi olur tabii.
Artık uygulamaya geçebiliriz.
Php’nin Memcache komutları gözünüzde büyüttüğünüz kadar zor degil. Php’nin memcache ile alakalı 19 parametresi var ama bize lazım olan
5 parametresi yada şöyle diyeyim bu 5 parametre her işimizi görüyor. Hatta 4 diyelim. Bu 4 parametre ile çok güzel işler çıkartabiliriz.
Bilmemiz gereken parametreler:
1-connect () //memcache sunucusuna bağlanmaya yarar
2- set() // Ram belleğe veri yazmaya yarar
3-get() //Ram bellekteki veriyi okumaya yarar.
4-flush() // işi biten tüm veriyi sildirir.
5-close() // bunu kullanmamakta hata vermez ama yinede bilmek gerekli.
Hangi parametre Ne işe yarar örneklendirelim.
<?
$bellek=new Memcache;
$bellek->connect(“127.0.0.1”,11211);
?>
Bu örnek tüm Memcache komutlarını öğreten en basit örnek.
<? $bellek=new Memcache; $bellek->connect("127.0.0.1",11211); $dizi=array('ali','veli','deli','selim'); $bellek->set("isim",$dizi,0,10); $yeni= $bellek->get("isim"); $bellek->close(); print_r($yeni); ?>
Kod açıklaması:
Set() komutu ile dizi değişkenimizin tamamını isim şeklinde paketleyip ram belleğe gönderiyoruz. 0 parametresi veri sıkıştırılsın mı parametresidir. 1 yaparsanız zlip kütüphanesi ile sıkıştırılır. 10 parametresi Ram bellekte kaç saniye kalacağını gösterir.
get() komutu ile ram bellekten verimizi çağırıyoruz.
close() parametresi ile memcache bağlantısını kapatıyoruz.
Memcache kullanımı bu kadar basittir. Asıl performansını mysql sorgularında verir. Onu da basit bir örnek ile açıklayayım.
$sorgu = mysql_query("SELECT * FROM makaleler "); $sonuc = mysql_fetch_array($sorgu); $bellek->set("isim",$sonuc,0,600); $yeni= $bellek->get("isim"); $bellek->close(); print_r($yeni);
Bu şekilde bir kod yapısı ile sitenize gelen her ziyaretçi için mysql_query oluşturulmaz. Veriler sizin belirlediğiniz zaman dilimi boyunca ram’dan okunup ziyaretçiye gönderilir. CPU kullanımınız yarı yarıya düşer.
<? $bellek=new Memcache; $bellek->connect("127.0.0.1",11211); $yeni= $bellek->get("isim"); if($yeni) { echo "Sorgu sonucu ram bellekten okundu"; } else { mysql_connect( "localhost", "root", "root" ) ; mysql_select_db('makaleler'); $sorgu = mysql_query("SELECT * FROM makaleler "); $sonuc = mysql_fetch_array($sorgu); $bellek->set("isim",$sonuc,0,600); } ?>
Şimdide Farklı Bir Kurulum Yapımını Anlatalım Belki İşine Yarayan Arkadaşlarımız Olur.
Gelelim sunucu tarafında memcached desteğini nasıl sağlayacağımıza.öncelikle memcache çalışması için 3 modüle ihtiyaç duyar.
1- libevent
2- memcached
3- memcache
Libevent:bir dosya tanımlayıcısı(Bir dosya tanımlayıcı basitçe söylemek gerekirse açık bir dosya ile ilişkilendirilmiş bir tamsayıdır.) üzerinde bir durumun gerçekleştiğinde ya da herhangi bir zaman aşımı olduğunda çalışması için geri çağrılan işlevleri çalıştırmayı sağlayan bir kütüphanedir.
Kısa bilgilerden sonra kurulum ayrıntılarına geçebiliriz; aşağıdaki kodları aynen kopyala yapıştır yaparak kullanabilirsiniz. Kurulum 64 bitlik centos 5.7 üzerinde gerçekleştirilmiştir. Ayrıca PHP ve Apache Kurulu olduğu varsayılmıştır.
/data/download/memcache dizinini oluşturup gerekli dosyalarımızı indiriyoruz.
#mkdir /data/download/memcache
# cd /data/download/memcache
#wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
#wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
#wget http://pecl.php.net/get/memcache
1) libevent kurulum ve ayarlarını yapıyoruz.
#tar xvzf libevent-2.0.21-stable.tar.gz
#cd /data/download/memcache/libevent-2.0.21-stable
# ./configure (c compiler kurulu değilse kuruyoruz. yum install gcc-c++.x86_64 )
#make
#make install
Libevent Kurulum dizinini linkliyoruz.
#ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib64/libevent-2.0.so.5
32 bit kullananlar aşağıdaki komutu uygulamalılar
#ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
2)Memcached Kurulum ve Derlemesine Geçiyoruz
#cd /data/download/memcache
#tar xvzf memcached-1.4.15.tar.gz
#cd /data/download/memcached-1.4.15
#./configure –with-libevent=/usr/local/lib/libevent-2.0.so.5
#make
#make install
3)Memcache Kurulum ve Derlemesini Yapıyoruz.
#cd /data/download/memcache
#tar xvzf memcache-2.2.7.tgz
#cd /root/mcache/memcache-2.2.7
#phpize –> enter (otomatik memcahe derlemeyi sagliyor)
*phpize: Bir PHP eklentisini derleme işlemine hazırlamak için phpize komutu kullanılır. Aşağıdaki örnekte, eklentinin kaynak kod paketinin eklenti dizininde bulunduğu varsayılmıştır:eklenti burda memcache-2.2.7dir
Eğer sisteminizde phpize komutu yoksa;
# yum install php-devel komutu ile kurabiliriz.
Komutun kullanım bilgilerini görmek için phpize –help komutunu verin.
yukarda çalıştırdığımız komutların ardından ekranda aşağıdaki gibi bir çıktı gelmesi gerekiyor.;
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
Eğer hata alırsanız aşağıdaki komutla phpize yolumuzu buluyoruz ve çıktıyı uyguluyoruz.Örnek çıktı aşağıdaki gibidir.
#which phpize
çıktı bu şekilde olabilir, çıktıyı aynen uyguluyoruz.
/usr/local/bin/phpize
Sonrasında derlemeye devam ediyoruz.
# ./configure –with-php-config=/usr/local/php5/bin/php-config
# make
# make install
Yukardaki adımları doğru uyguladıysak aşağıdaki gibi bir çıktı verecektir.
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20090626/ Bu çıktı daha sonrasında bizi lazım olcak not edelim.
Başarılı bir kurulum sonucunda eklenti PHP eklentileri dizinine eklenti.so adıyla yerleştirilir. Eklentiyi etkin kılmak için php.ini dosyanıza bir extension=eklenti.so satırı eklemeniz gerekecektir
Sıra geldi memcache’i çalıştırmaya;
# /usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048
Yukarıdaki satır memcacehd i 1024Mb bellek ile 127.0.0.0 ip adresi üzerinde 11211 numaralı portta max 2048 connection ve daemon olarak memcached çalıştır demek. Diğer memcached options için;
#man memcached komutunu kullanabiliriz.
Memcached’ın çalışıp çalışmadığını kontrol edelim;
# ps -ef | grep memcache
Doğru çıktı aşağıdaki gibi olmalıdır.
root 11457 1 0 18:05 ? 00:00:00 /usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048
root 11464 11335 0 18:05 pts/2 00:00:00 grep memcached
Buraya kadar olan işlemlerde gerekli modüllerimizi kurduk derledik ve memcached’ı aktif hale getirdik. Şimdi yukarıda’da bahsettiğimiz eklentiyi aktif hale getirmek için php.ini dosyamızı açıp gerekli tanımları yapıyoruz.
# vim /etc/php.ini
php.ini içerisinde extensions_dir satırını bulup az önce not ettiğimiz kod ile değiştiriyoruz.değişiklik sonrası hali aşağıdaki gibi olacaktır.
extension_dir = “/usr/local/lib/php/extensions/no-debug-non-zts-20090626/”
yine php.ini dosyasının en altına aşağıdaki kodları ekliyoruz.
extension = “memcache.so”
dosyamızı esc:wq! tuş kombinasyonlarıyla kaydedip apache’mizi restart ediyoruz.
service httpd restart
Son olarak her reboot ta memcached in otomatik çalıştırılması için rc.local dosyamızın en altına aşağıdaki satırı ekliyoruz.
vi /etc/rc.local
/usr/local/bin/memcached -u root -m 1024 -l 127.0.0.0 -p 11211 -d -c 2048
Serverımız yeniden başladığında memcached otomatik olarak çalışıcaktır.
[root@—- ~]# ps -ef | grep memcache
root 2860 7218 0 18:07 pts/0 00:00:00 grep memcache
root 4989 1 1 Mar15 ? 13:06:51 /usr/local/bin/memcached -u root -p 11211 -m 8192 -d -c 60000
Memcache’in telnet üzerinden kullanımı ile ilgili faydalı olabileceğini düşündüğüm bazı örnekler vereceğim.
çıktının açıklamasını yukarıda belirttiğimiz yazıdan öğrenebilirsiniz.
eğer memcache çalışmıyor ise konsoldan
[root@—— ~]#/usr/local/bin/memcached -u root -p 11211 -m 8192 -d -c 60000
komutunu yazarak çalıştırabiliriz.
şimdi sıra telnet üzerinden memcache istatistiklerini öğrenmeye tekrar komut satırından;
[root@—- ~]#telnet localhost 11211
komutunu çalıştırarak memcache bağlantısı kurduk.
[root@—— ~]# telnet localhost 11211Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
<komut>
bağlandıktan sonra komut satırında desteklenen Komutlar aşağıdaki gibi;
Bir Başka Konuda Buluşmak Üzere Kendinize İyi bakın 😉
Hocam gerçekten çok açıklayıcı açıklama olmuş.Teşekkürler
Faydalandım, teşekkür ederim
Gayet başarılı bir anlatım olmuş. Tebrik ederim.