如何在Joomla中使用memcache?我是这个领域的新手,所以请描述你的答案。
答案 0 :(得分: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
答案 1 :(得分:5)
为了让Joomla使用memcache进行会话缓存,您需要手动编辑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";}}}';
这是一个序列化的multy-dimentianal数组。我使用此代码生成上面的字符串:
$a = array(
"persistent" => "0",
"compression" => "0",
"servers" => array(
"0" => array(
"host" => "127.0.0.1", "port" => "11211")
)
);
echo(serialize($a));
如果你没有添加memcache_settings选项,你的会话永远不会用于memcache。
答案 2 :(得分:4)
configuration.php
中的这些设置适用于Joomla 3.3 +中的memcached
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 - 这可以与APCu一起使用( APCu 是Alternative PHP Cache与操作码缓存已删除) - 如果您不需要分布式内存缓存(memcached
),则在本地缓存用户空间
对于单个VPS APCu具有较低的内存占用量和是一个更合适的缓存(尤其是php5.5
)&可以在configuration.php
中设置:
public $cache_handler = 'apc';
public $session_handler = 'apc';
答案 3 :(得分:2)
这怎么可能也为Joomla 2.5提供一些帮助,因为它指向Joomla管理屏幕使用memcache http://www.siteground.com/tutorials/supercacher/joomla_memcached.htm
答案 4 :(得分:0)
不使用 APC进行后端缓存更好。这可能会造成很多碎片。我只看到它降低了Joomla的性能。