• 22-03-2014, 18:57:48
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba,

    Şu memcache konusunu kurcalamaya başladım ama çok da yeterli bir şeyler bulamadım.

    Sunucumda memcache var, aktif ettim 256mb da ram verdim (ki artrırabilirim ramlerim müsait vps kullanıyorum).

    şimdi ben bunu yaptıktan sonra bu program çalışmaya başlıyor mu yoksa sitelerim için extra birşeyler yapmam mı gerekiyor. mesela opencart kurulu sitem memcache den şu an yararlanıyor mu yoksa yararlandırmak için başka bir yola mı başvurmalı?
  • 22-03-2014, 19:14:50
    #2
    oguzhan306 adlı üyeden alıntı: mesajı görüntüle
    Merhaba,

    Şu memcache konusunu kurcalamaya başladım ama çok da yeterli bir şeyler bulamadım.

    Sunucumda memcache var, aktif ettim 256mb da ram verdim (ki artrırabilirim ramlerim müsait vps kullanıyorum).

    şimdi ben bunu yaptıktan sonra bu program çalışmaya başlıyor mu yoksa sitelerim için extra birşeyler yapmam mı gerekiyor. mesela opencart kurulu sitem memcache den şu an yararlanıyor mu yoksa yararlandırmak için başka bir yola mı başvurmalı?
    Opencartı bilmiyorum fakat, opencartta memcache özelliği varsa çalışır yoksa memcache kurduğunuzda siteyi hızlandıran bir özellik değildir.
  • 22-03-2014, 19:40:40
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    @oguzhan306; sadece kurmak yeterli değil, eklenti vb. şeylerle bunu kullandığın yazılıma tanıtman gerekiyor. Bu bağlantı işine yarayabilir.
  • 23-03-2014, 11:52:29
    #4
    Sorun çözüldü işe yarasın diye paylaşıyorum,

    Dediğiniz gibi memcache sadece çalışıyor ama bunun ister opencart ister başka birşey olsun bir şekilde tetiklenmesi gerekiyor.

    Sunucu üzerinden memcache aktif edildiyse php.ini dosyası otomatik güncelleniyor ama özel (her domain için başka bir ini dosyası) php.ini dosyası kullanıyorsanız bunu update etmeniz gerekiyor.

    Benimki aşağıdaki şekilde modifiye edildi, tabi bu muhtemelen sunucudan sunucuya değişecek bir konudur.
    extension_dir = /usr/local/php5.3/lib//extensions/no-debug-non-zts-20090626/
    extension = memcache.so
    extension = memcached.so
    ikinci olarak da bunun tetiklenmesi gerekiyor. aşağıda verdiğim kodlar en azından sunucunuzda aktif ettiğiniz memcache çalışıyor mu çalışmıyor mu yu test etmek için yeterli.

    <?php
     $m = new Memcache();
     $m->addServer('unix:///home/sys/memcached.sock', 0); // DEĞİŞKEN
     if ($cnt = $m->get('key'))
         $cnt++;
     else
         $cnt = 1;
    
     $m->set('key', $cnt);
    
     echo "Counter: $cnt";
     ?>
    Değişken olarak verdiğim satır yine sunucudan sunucuya değişiyor. kimisinde ip adresi, port kimisinde domain çeşit çeşit seç beğen al.

    eğer sayacınızda bir artma varsa memcache çalışıyor demektir.

    Bunu opencart'a uyarlamak içinse

    system/library klasörü içersindeki cache.php dosyasını aşağıdaki şekilde güncellemek gerekiyor.

    <?php
    class Cache {
                    public function __construct() {
                        if(class_exists('Memcache')) {
                            $this->memcache = new Memcache;
                        } elseif(class_exists('Memcached')) {
                            $this->memcache = new Memcached;
                        }
    
                        $this->memcache->addServer('unix:///home/sys/memcached.sock', 0);
                        //$this->memcache->addServer('localhost', '11211');
    
                        $this->site_key = substr(md5(HTTP_SERVER),0,5);
                    }
    
                    public function get($key) {
                        $cache = $this->memcache->get($key.'.'.$this->site_key);
    
                        return unserialize($cache);
                    }
    
                    public function set($key, $value) {
                          $result = $this->memcache->replace($key.'.'.$this->site_key, serialize($value));
    
                          if($result == false) {
                              $this->memcache->set($key.'.'.$this->site_key, serialize($value));
                          }
                    }
    
                    public function delete($key) { //keep $key for legacy purposes
                        $this->memcache->flush();
                    }
                }
    ?>
    //$this satırında ip örneği var, sunucunuca göre o iki satırdan birini kullanmak lazım.

    tabi bu işlemleri yaparken tam bir yedek alın ben yaptım oldu ama sorumluluk kabul etmem