如何在Joomla中使用memcached

时间:2009-08-11 13:12:48

标签: php mysql joomla memcached

如何在Joomla中使用memcache?我是这个领域的新手,所以请描述你的答案。

5 个答案:

答案 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的性能。