【问题标题】:Does CakePHP have support for APC, XCache and others?CakePHP 是否支持 APC、XCache 等?
【发布时间】:2011-02-06 06:48:18
【问题描述】:

CakePHP 是否支持 APC、XCache 等?

【问题讨论】:

    标签: php cakephp apc xcache


    【解决方案1】:

    在 cake 的 /app/config/core.php 中,有一些选项供您设置缓存引擎(版本高于 1.2)。例如

      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
    ));
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        只是为了添加已经提供的其他好的答案,有一些技巧可以让 cake 使用文件缓存以外的任何东西作为它的内部缓存。这段代码将使 cake 使用 APC、Xcache,无论它的核心缓存是什么(本例中为 APC)

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

        Cake 还可以通过将模型放入您的控制器/应用控制器中来缓存您的模型。

        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');
        

        【讨论】:

          【解决方案4】:

          在 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';
          

          }

          【讨论】:

            【解决方案5】:

            请注意,在 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.phphttps://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 扩展。此扩展使用网络服务器上的共享内存来存储对象。这使得它非常快,并且能够提供原子读/写功能。默认情况下,2.0-2.2 中的 CakePHP 将使用此缓存引擎(如果可用)。

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

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

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

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


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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2010-10-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-01-03
              • 2017-07-27
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多