CakePHP是否支持APC,XCache和其他?

时间:2010-04-09 18:29:58

标签: php cakephp apc xcache

CakePHP是否支持APC,XCache和其他人?

5 个答案:

答案 0 :(得分:6)

在蛋糕的/app/config/core.php中,您可以选择设置缓存引擎(版本高于1.2).e.g

  APC (http://pecl.php.net/package/APC)

 Cache::config('default', array(
    'engine' => 'Apc', //[required]
    'duration'=> 3600, //[optional]
    'probability'=> 100, //[optional]
    'prefix' => Inflector::slug(APP_DIR) . '_', //[optional]  prefix every     cache file with this string
));

答案 1 :(得分:4)

它应该支持APC作为操作码缓存 - 它只是PHP代码,毕竟。

似乎有一个与APC相关的类使用APC作为数据缓存:请参阅ApcEngine
另请参阅手册:7.2.2 Cache Engines in Cake,其中表示支持APC,XCache,File和memcached。

答案 2 :(得分:1)

只是为了添加已经提供的其他好的答案,有一些技巧可以让蛋糕使用除文件缓存以外的任何内容来进行内部缓存。这段代码将使蛋糕使用APC,Xcache,无论它的核心缓存(本例中为APC)

Cache::config('_cake_core_', 
    array(
       'engine' => 'Apc',
       'duration'=> 3600,
       'probability'=> 100,
    )
);

Cake还可以通过将它放在您的控制器/ appcontroller中来缓存模型。

var $persistModel = true;

但是,模型只能使用文件缓存

这些都是从这篇文章中偷来的,其中包括一些使用cake的缓存机制来加速你的应用程序的方法

http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps

另外,正如Pascal所提到的,通过安装和配置APC,您的PHP操作码会自动缓存。

为了获得更多的缓存优势,php支持将memcache作为会话存储的文件替代方案,这在负载平衡环境中特别有用。单个服务器实现的一个示例是将其放入您的ini

extension=memcache.so
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211?persistent=1"

这是你的core.php

Configure::write('Session.save', 'php');

答案 3 :(得分:1)

在CakePhp 2.0中自动检测并设置Apc。在你的core.php中,你可以找到:

$engine = 'File'; 
if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
    $engine = 'Apc';

}

答案 4 :(得分:0)

请注意,在CakePHP 2.2之后,禁用自动APC检测。

在2.2.1中使用APC,如果检测到:https://github.com/cakephp/cakephp/blob/2.2.1/app/Config/core.php

由于2.3默认引擎是"文件"。最新稳定/app/Config/core.php https://github.com/cakephp/cakephp/blob/2.4.4/app/Config/core.php#L352


自2.4.4起支持

  • 文件引擎
  • APC
  • WINCACHE
  • 了XCache
  • 内存缓存
  • Redis的

文档: http://book.cakephp.org/2.0/en/core-libraries/caching.html#caching

  • FileCache文件缓存是一个使用本地文件的简单缓存。它是最慢的缓存引擎,并没有为原子操作提供尽可能多的功能。但是,由于磁盘存储通常非常便宜,因此存储大型对象或不经常编写的元素在文件中运行良好。这是2.3 +

  • 的默认缓存引擎
  • ApcCache APC缓存使用PHP APC扩展。此扩展使用Web服务器上的共享内存来存储对象。这使得它非常快,并且能够提供原子读/写功能。默认情况下,2.0-2.2中的CakePHP将使用此缓存引擎(如果可用)。

  • Wincache Wincache使用Wincache扩展。 Wincache在功能和性能方面与APC类似,但针对Windows和IIS进行了优化。

  • XcacheEngine Xcache是​​一个PHP扩展,为APC提供类似的功能。

  • MemcacheEngine使用Memcache扩展。 Memcache提供了一个非常快速的缓存系统,可以分布在许多服务器上,并提供原子操作。

  • RedisEngine使用phpredis扩展。 Redis提供类似于memcached的快速且持久的缓存系统,还提供原子操作。


如果您对使用哪一个感到好奇。检查它们的开发状态。