2009-08-11 77 views
7

如何在Joomla中使用memcache?我是這個領域的新手,所以請用你的答案來描述。如何在Joomla中使用memcached

+2

你需要* memcached嗎? – ceejayoz 2009-08-11 13:36:07

+1

因爲這個原因,使用memcached的IMHo網站通常應遠離Joomla或任何盒裝CMS。原因將是 - 實現memcached - 你將不得不改變源代碼的PHP代碼(有時可能是劇烈)。 Joomla(或任何其他盒裝CMS)專爲那些寧願設計模板而不是更改源代碼的人設計。此外 - 你真的不應該改變Joomla的核心PHP,因爲它將是一個黑客攻擊,你將有更新在未來的問題,這將使你的網站非常容易破解。只有擁有羣集時才使用memchached。 – Stann 2011-01-16 22:55:37

+8

@Andre Joomla的核心有一個緩存層,它實現了memcached,XCache和平面文件緩存等。 Joomla框架有一個緩存類,您可以在其中發送鍵值對,然後根據配置中選擇哪個驅動程序來處理緩存。絕對不需要破解Joomla來添加memcached;它已經內置。 – jlleblanc 2011-05-27 16:03:21

回答

15

您將需要在服務器上安裝memcached,並可能需要root訪問權限才能這樣做。您可以從http://www.danga.com/memcached/獲取memcached。它需要libevent,可在此處下載:http://www.monkey.org/~provos/libevent/

最後,您需要獲取用於memcache的PHP PECL擴展。要安裝此,你需要安裝PHP去哪裏的服務器並運行此命令:

pecl install memcache 

同樣,你很可能需要對服務器的root訪問權限做到這一點。在安裝了libevent,memcached和PECL擴展之後,請轉至Joomla中的全局配置,並在緩存設置下選擇Memory Cache作爲緩存處理程序。保存全局配置後,再次打開它,更多輸入應顯示在緩存處理程序輸入下。將Memory Chache Server設置爲localhost,將端口設置爲11211。這應該與您用於從命令行運行memcached的參數相匹配。

編輯:您還可以使用XCache不僅以類似於Memcache的方式存儲數據,而且還會緩存由PHP生成的操作碼。這樣,它不會從磁盤讀取PHP代碼並每次解析它,它都會將代碼保存在內存中以用於下一個請求。

務必在全局配置中選擇XCache作爲緩存處理程序。閱讀了解有關安裝了XCache:http://xcache.lighttpd.net/wiki/InstallFromSource

+0

真棒謝謝你jlleblanc – webkul 2010-02-15 19:25:12

5

爲了使的Joomla使用內存緩存的會話緩存,你需要手動編輯的configuration.php並更改該行:

public $session_handler = 'database'; 

這一個:

public $session_handler = 'memcache'; 

而這就是缺少無處不在,你需要添加一個新的選項memcache_settings:

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";}}}'; 

這是一個序列化的多維數組。我用這個代碼來生成上面的字符串:

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

echo(serialize($a)); 

如果不添加memcache_settings選擇您的會議將不會與memcache的工作。

4

這些設置memcached。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'; 

到Debian的系統上安裝memcached

apt-get install memcached php5-memcached 

(你也可以使用memcache代替memcached每次出現在上述public變量&安裝舊php5-memcache擴展)

升級到php5.5會給你一個內置的Zend Opcode Cache - 這可以使用APCuAPCuAlternative PHP Cache與操作碼緩存刪除) - 緩存用戶級本地,如果你並不需要一個分佈式內存緩存(memcached

對於一個VPS APCu具有更低的內存佔用&是更適合高速緩存(尤其是php5.5)&可以configuration.php設置有:

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

這些設置爲Joomla 3.7上memcached工作 – David 2017-05-05 15:01:33

0

這是更好地不使用 APC用於後端緩存。這可能會導致很多碎片。我只看到它降低了Joomla的性能。