Zend_Cache与Memcachier

时间:2013-01-01 22:54:31

标签: zend-framework caching memcached

我可以在ZendFramework 1.12中使用memcachier吗?

我正在使用的提供程序(AppFog)只提供Memcachier(Memcached即将在10个月后推出)而且我的应用程序在启动时需要大量缓存。我不想坚持APC所以我没有其他好的选择。

1 个答案:

答案 0 :(得分:1)

所以现在这只是一个半答案,我会试着弄清楚剩下的。顺便说一句,我为MemCachier工作,如果您有更多问题,请发送电子邮件至support@memcachier.com。

PHP默认包含两个memcache绑定:memcache和memcached。第一个(memcache)是它自己的memcache procotol实现,而第二个(memcached)是一个php绑定到libmemcached C ++库。

php的memcached绑定现在支持SASL(从2.0.0版开始)。可悲的是,没有记录。它也是memcached模块的可选部分,因此您需要确保在启用了SASL支持的机器(或AppFog)上编译它。大致这样做的步骤是:

  1. 安装libmemcached。我使用的是版本1.0.14。
  2. 安装php-memcached。确保在运行./configure时将“--enable-memcached-sasl”选项传递给它。
  3. 构建这两个时,你可以理智地检查“./configure”的输出,以确保确实启用了SASL支持,遗憾的是现在它可能很棘手。
  4. 编辑php.ini文件。将以下行放入其中:

    [memcached]
    memcached.use_sasl = 1
    
  5. 我使用自制程序在OSX 10.8上完成了所有这些操作。如果是这种情况,则以下情况应该有效:

    $ brew install libmemcached
    $ brew edit php54-memcached 
        // you'll need to add the line: 
           args << "--enable-memcached-sasl"
        // to the brew file.
    $ brew install php54-memcached
    

    现在要实际使用SASL支持,这里有一个测试文件来演示它并且是一个很好的理智检查。

    <?php 
    /**
     * Test of the PHP Memcached extension.
     */
    
    error_reporting(E_ALL & ~E_NOTICE); 
    
    $use = ini_get("memcached.use_sasl");
    $have = Memcached::HAVE_SASL;
    echo "Have SASL? $have\n";
    echo "Using SASL? $use\n\n";
    
    $mc = new Memcached(); 
    
    $mc->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
    
    $mc->setSaslAuthData("user-1", "pass");
    
    $mc->addServer("localhost", 11211); 
    
    $mc->set("foo", "Hello!"); 
    $mc->set("bar", "Memcached..."); 
    
    $arr = array( 
        $mc->get("foo"), 
          $mc->get("bar") 
        ); 
    var_dump($arr); 
    ?>
    

    目前我还不知道如何使其适用于Zend Framework。我不熟悉它,所以可能需要一些时间来安装和弄清楚。虽然其中一个后端适用于SASL auth。似乎非常可行。