• 11-05-2013, 01:45:28
    #1
    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);
    ?>

    Bilmemiz gerekenler. memcache.default_port 11211'dir.
    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);
    }
    ?>
    Repleri görelim devamı gelecek
    • digiklan
    • Hosting-TR
    • karacoder
    digiklan, Hosting-TR, karacoder ve 28 kişi bunu beğendi.
    31 kişi bunu beğendi.
  • 11-05-2013, 01:51:23
    #2
    radmin çalışıyor
  • 11-05-2013, 04:49:24
    #3
    browserdakı yerını aldı
  • 11-05-2013, 05:24:04
    #4
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Gerçekten çok yararlı bilgi olmuş. Saat 5.23 yarın hemen deneyeceğim teşekkürler.
  • 11-05-2013, 05:56:17
    #5
    Seni uzun yıllar sonra böyle güzel konular ile birlikte görmek ne büyük mutluluk babacan Misafir; Verdim repini
  • 11-05-2013, 09:29:12
    #6
    Paylaşım ekibine girseniz iyi olur

    Verdim repinizi
  • 11-05-2013, 13:01:07
    #7
    Güzel bir sistem ama kendi vps yada sunucusu olmayan için kötü olur shared hostinglerde bulunma ihtimali %1 bile değil.

    CTRL + D ve + Rep adminim
  • 11-05-2013, 21:23:31
    #8
    Üyeliği durduruldu
    bilgi icin sagol radmin
  • 10-06-2013, 10:25:51
    #9
    Bilgi için teşekkürler gerçekten çok faydalı bir konu.
    Ancak "flush() // işi biten tüm veriyi sildirir." burda memcachei tümüyle mi siliyor yoksa belli bir memcache keyi girilip o keye ait verileri mi siliyor? Sitemde ortalama 10 15 tane farklı keylere ait memcache kullandım bunların hepsini istediğim zaman silmek istiyorum. Memcache deki tüm verileri tek seferde silen fonksiyona ihtiyacım var. Bu konuda yardımcı olur musunuz?
    Yardımlarınız için şimdiden teşekkürler.