2009-08-11 17 views
7

Jak korzystać z memcache w Joomla? Jestem początkującym w tej dziedzinie, więc proszę opisać swoją odpowiedź.Jak korzystać z memcached z Joomla

+2

Czy * potrzebujesz * memcached? – ceejayoz

+1

Witryny IMHo, które korzystają z memcached, powinny z tego powodu trzymać się z dala od Joomla lub dowolnego zapakowanego systemu CMS. Powodem byłaby implementacja memcached - musiałbyś zmienić kod źródłowy php (być może czasami drastycznie). Joomla (lub dowolny inny system CMS) został zaprojektowany dla osób, które wolą zaprojektować szablon zamiast zmieniać kodu źródłowego. Ponadto - naprawdę nie powinieneś zmieniać podstawowego php Joomla, ponieważ będzie to raczej hack i będziesz mieć problemy z aktualizacją w przyszłości, co sprawi, że twoja strona BARDZO łatwa do zhackowania. Używaj memchached tylko, jeśli masz klaster. – Stann

+8

Rdzeń @Andre Joomla posiada warstwę pamięci podręcznej, która implementuje między innymi pamięci podręczne memcached, XCache i płaskie pliki. Joomla Framework ma klasę buforowania, do której wysyłana jest para klucz-wartość, a następnie obsługuje buforowanie w zależności od tego, który sterownik został wybrany w konfiguracji. Nie ma absolutnie żadnej potrzeby hackowania Joomli, aby dodać memcached; jest już wbudowany. – jlleblanc

Odpowiedz

15

Musisz zainstalować memcached na swoim serwerze i prawdopodobnie będziesz potrzebować uprawnień roota do tego. Możesz dostać memcached z http://www.danga.com/memcached/. Wymaga libevent, który można pobrać tutaj: http://www.monkey.org/~provos/libevent/

Wreszcie, musisz uzyskać rozszerzenie PHP PECL dla memcache. Aby to zainstalować, trzeba udać się do serwera, na którym zainstalowany jest PHP i uruchomić polecenie:

pecl install memcache 

Ponownie, najprawdopodobniej potrzebują dostępu do serwera głównego, aby to zrobić. Po zainstalowaniu libevent, memcached i rozszerzeń PECL przejdź do Global Configuration w Joomla i wybierz Memory Cache jako Cache Handler w ustawieniach Cache. Po zapisaniu konfiguracji globalnej, otwórz ją ponownie i więcej danych wejściowych powinno pojawić się pod wejściem do procedury obsługi pamięci podręcznej. Ustaw serwer pamięci Chache na localhost i port na 11211. Powinno to być zgodne z parametrami używanymi do uruchamiania memcached z wiersza poleceń.

EDYCJA: Możesz także użyć XCache nie tylko do przechowywania danych w sposób podobny do Memcache, ale także do buforowania kodu operacyjnego wygenerowanego przez PHP. W ten sposób zamiast odczytywać kod PHP z dysku i analizować go za każdym razem, będzie przechowywać kod w pamięci dla następnego żądania.

Należy wybrać opcję XCache jako moduł obsługi pamięci podręcznej w konfiguracji globalnej. Przeczytaj to informacje na temat instalowania XCache: http://xcache.lighttpd.net/wiki/InstallFromSource

+0

Awesome Thanks a ton jlleblanc – webkul

5

Aby Joomla użyć memcache do buforowania sesji trzeba ręcznie edytować configuration.php i zmienić linię:

public $session_handler = 'database'; 

do tego:

public $session_handler = 'memcache'; 

A to, czego brakuje wszędzie, trzeba dodać nowe memcache_settings opcji:

public $memcache_settings = 'a:3:{s:10:"persistent";s:1:"0";s:11:"compression";s:1:"0";s:7:"servers";a:1:{i:0;a:2:{s:4:"host";s:9:"127.0.0.1";s:4:"port";s:5:"11211";}}}'; 

To jest serializowana tablica multy-dimentian. Używam tego kodu do generowania powyższy ciąg:

$a = array(
    "persistent" => "0", 
    "compression" => "0", 
    "servers" => array(
    "0" => array(
     "host" => "127.0.0.1", "port" => "11211") 
    ) 
    ); 

echo(serialize($a)); 

Jeśli nie dodać opcję memcache_settings sesje nigdy nie będzie działać z memcache.

4

Te ustawienia w configuration.php pracy dla memcached w Joomla 3.3+

public $cache_handler = 'memcached'; 
public $memcached_server_host = '127.0.0.1'; 
public $memcached_server_port = '11211'; 
public $memcached_persist = '1'; 
public $memcached_compress = '1'; 
public $cachetime = '15'; 
public $session_handler = 'memcached'; 
public $session_memcached_server_host = '127.0.0.1'; 
public $session_memcached_server_port = '11211'; 

Aby zainstalować memcached na systemie Debian:

apt-get install memcached php5-memcached 

(można również użyć memcache w miejscu każdego występowania memcached w powyższych public zmiennych & zainstalować starszą php5-memcache rozszerzenia)

Aktualizacja do php5.5 da ci wbudowany Zend Opcode Cache - to może być używane z APCu (APCu jest Alternative PHP Cache z Opcode Cache usunięte) - do podręcznej przestrzeni użytkownika lokalnie, jeśli nie potrzebujemy cache dystrybuowane pamięci (memcached)

dla pojedynczego VPS APCu ma niższe zużycie pamięci & jest bardziej odpowiedni bufor (zwłaszcza z php5.5) & można ustawić w configuration.php z:

public $cache_handler = 'apc'; 
public $session_handler = 'apc'; 
+0

Te ustawienia dla memcached działają na Joomla 3.7 – David

0

lepiej nie używać APC dla pamięci podręcznej zaplecza. Może to spowodować dużą fragmentację. Widziałem tylko, że pogarsza to wydajność Joomla.