2010-04-11 15 views
6

badam możliwości wykorzystania memcached jako magazyn sesji dla systemu zbudowanego na CodeIgniter. Czy ktokolwiek to zrobił wcześniej (to chyba głupie pytanie :) a jeśli tak, jakie są twoje doświadczenia? Czy korzystałeś już z istniejących bibliotek/rozszerzeń? Co się stało, jeśli chodzi o poprawę wydajności? Wszelkie zastrzeżenia?Korzystanie memcached jako pamięci sesja z CodeIgniter

Odpowiedz

6

Mając PHP umieścić sesje w Memcache bezpośrednio, a nie poprzez kod ramy jest prosta - to tylko zmiana dwie linie w php.ini:

# 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" 

używa nieco starszych (ale wciąż w pełni obsługiwane) rozszerzenie "memcache" z PECL.

1

Można wybrać CodeIgniter Multicache Biblioteka, które można znaleźć tutaj: http://www.haughin.com/code/multicache/

W kodzie można proste użycie tak:

$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. 
-3

To nie jest praktyczny w użyciu Memcached do przechowywania danych relacyjnych (takich jak MySQL); byłoby nieefektywne zażądanie każdego elementu od Memcached, a następnie przetestowanie, czy pasuje do zapytania. Są lepsze rozwiązania takiego problemu (na przykład rozważmy tabele pamięci w MySQL).

Z drugiej strony, jeśli szukasz prostego przechowywania klucza/wartości, to z pewnością praktyczna aplikacja do Memcached. Czego bym się jednak trochę obawiał, to napisanie dla niego sterownika CodeIgniter. Interfejs Memcached w PHP jest już prosty:

$memcached->get('my key'); 
$memcached->set('my key', 'my value'); 

Proponuję po prostu bezpośrednio korzystać z klas Memcached. Dodanie całego dodatkowego obciążenia do CI wydaje mi się po prostu brudne i niepotrzebne.

Po drugiej stronie, widziałem implementacje Memcached używane do silnika sesji CodeIgniter. Jest to z pewnością bardzo ważny powód, by napisać kierowcę, i bardzo bym go zachęcał (sesje to ból na karku).

Powodzenia

Powiązane problemy