2009-08-11 82 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的性能。