2012-03-20 60 views
17

我已安装memcached。这是phpinfo()函数:必须加载memcache扩展才能使用此后端

enter image description here

但是,使用像这样的时候:

private static function getZendCacheMemcachedObject() 
{ 
    $frontendOpts = array(
     'caching' => true, 
     'lifetime' => 3600, 
     'automatic_serialization' => true 
    ); 

    $backendOpts = array(
     'servers' =>array(
      array(
      'host' => 'localhost', 
      'port' => 11211, 
      'weight' => 1 
      ) 
     ), 
     'compression' => false 
    ); 

    return Zend_Cache::factory('Core', 'Memcached', $frontendOpts, $backendOpts); 
} 

public function foo($id) 
{ 
    $cache = self::getZendCacheMemcachedObject(); 
    $cacheKey = 'foo_'.$id; 
    $xml = $cache->load($cacheKey); 

    if (false === $xml) { 
     $xml = $this->httpClient->foo(); 
     $cache->save($xml, $cacheKey); 
    } 

    return $xml; 
} 

我得到这个错误:

The memcache extension must be loaded for using this backend 

任何想法?

+0

FYI ZF输出一个错误,如果'extension_loaded('内存缓存')'返回false,所以很奇怪是继续进行配置。 – 2012-03-20 17:09:23

+0

好吧,问题似乎是Zend_Cache_Backend_Memcached加载memcache库而不是memcached。为什么当它使用memcache时称为mecached?跆拳道。 – 2012-03-20 17:20:03

+1

这可能有所帮助:http://serverfault.com/questions/63383/memcache-vs-memcached - 看着我的phpinfo,它肯定是'memcache',我已经安装了,而你的名单'memcached' – 2012-03-20 17:24:09

回答

35

PHP有混淆名称的两个Memcached的库:

你的代码需要的第一个。只需做一个简单的pecl uninstall memcached然后pecl install memcache,修改你的php.ini包括合适的.so,它应该工作。

+1

这些名字让我困惑每时每刻。我永远不知道我是在处理Memcache还是Memcached或Libmemcached:如果您提供了完整的说明,P – 2013-08-22 09:20:15

+0

https://xkcd.com/1742/会很棒。我们将什么添加到php.ini? – Isaac 2017-12-04 20:34:02

2

对已安装PHP库,它看起来像最简单的解决办法是使用不同的后端 - 如果你的Zend Framework的版本允许它:

Zend_Cache_Backend_Libmemcached(http://doczf.mikaelkael.fr/1.11/en/zend.cache.backends.html

我认为 返回Zend_Cache :: factory('Core','Memcached',$ frontendOpts,$ backendOpts); 变成 返回Zend_Cache :: factory('Core','Libmemcached',$ frontendOpts,$ backendOpts);

1

我解决这个问题很简单。发生这个问题是因为你没有安装php memcached扩展。让我们通过这个命令在Ubuntu

sudo apt-get install php-memcached 

安装或者在其他的操作系统,你可以找出自己

+0

E:无法找到软件包php-memcached – Chap 2014-09-11 00:07:07

+0

尝试执行apt-get更新,然后再次执行 – Phuc 2014-09-12 01:12:38

+3

** php5-memcached ** – 2015-08-30 06:55:44

相关问题