ile bir oturum deposu olarak memcached kullanma. Bunu daha önce hiç kimse yaptı (muhtemelen aptalca bir soru :) ve eğer öyleyse deneyimleriniz nedir? Mevcut kütüphaneleri/uzantıları kullandınız mı? Performans iyileştirme konusunda ne gördünüz? Herhangi bir uyarı var mı?Ben <strong>CodeIgniter</strong> üzerine inşa edilmiş bir sistem için bir <strong>oturum depolama</strong> olarak <strong>memcached</strong> kullanmanın olanaklarını araştırıyorum CodeIgniter
cevap
Having PHP ziyade çerçeve kodu kolaydır kullanmak yerine, doğrudan Memcache içine oturumları koymak - sadece PHP.ini içinde iki satır değişiyor:
# see http://php.net/manual/en/memcache.ini.php
session.save_handler = memcache
session.save_path="tcp://127.0.0.1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
Bu biraz büyük kullanır (ama yine de tamamen desteklenmektedir) 'memcache' uzantısı PECL'den.
Burada bulunabilir CodeIgniter Multicache Kütüphanesi, seçebilirsiniz: kodunda http://www.haughin.com/code/multicache/
yapabilirsiniz böyle basit kullanım:
Bu depolama için Memcached kullanmak pratik değil$this->load->library('cache');
//To use memcache
$this->cache->useMemcache($iptomemcache, $port); /*if you want, you can check to see if the connection even worked, as this will return false if the connection failed.*/
$this->cache->save('testkey', 'testdata', NULL, 3600); /*caches the testdata string for 1 hour. */
echo $this->cache->get('testkey');
//To switch back to file based caching
$this->cache->useFile();
//etc.
ilişkisel verilerin (MySQL gibi); Memcached'den her bir öğeyi talep etmek ve bir sorguyla eşleşip eşleşmediğini test etmek verimsiz olacaktır. Böyle bir soruna daha iyi çözümler vardır (örneğin, MySQL'deki Bellek tablolarını düşünün).
Diğer yandan, basit anahtar/değer depolama alanı arıyorsanız, kesinlikle Memcached için pratik bir uygulamadır. Yine de, biraz dikkatli olacağım, bunun için bir CodeIgniter sürücüsü yazıyor. PHP'de Memcached arabirimi zaten çok basit:
$memcached->get('my key');
$memcached->set('my key', 'my value');
Sadece Memcached sınıflarını doğrudan kullanmanız önerilir. Tüm ekstra ek yükü CI'ye eklemek benim için kirli ve gereksiz görünüyor.
Bunun tersine, CodeIgniter'ın oturum altyapısı için kullanılan Memcached uygulamalarını gördüm. Bu kesinlikle bir sürücü yazmak için çok geçerli bir sebeptir ve bunu şiddetle tavsiye ederim (oturumlar boyunda bir ağrıdır).
İyi şanslar