必须加载 memcache 扩展才能使用此后端

2022-08-30 19:43:15

我安装了memcached。这是来自phpinfo():

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

有什么想法吗?


答案 1

PHP有两个Memcached库,名称令人困惑:

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


答案 2

对于您已经安装的PHP库,看起来最简单的解决方案是使用不同的后端 - 如果您的zend框架版本允许的话:

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


推荐