26
2024
04
15:18:29

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

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



但像这样使用它时:

代码语言:javascript
复制
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;}

我得到了这个错误:

代码语言:javascript
复制
The memcache extension must be loaded for using this backend



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



您的代码需要第一个。只需执行一个简单的pecl uninstall memcached,然后执行pecl install memcache,修改您的php.ini以包含适当的.so,它就应该可以工作了。



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

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

我假设return Zend_Cache::factory('Core','Memcached',$frontendOpts,$backendOpts);变成return Zend_Cache::factory('Core','Libmemcached',$frontendOpts,$backendOpts);



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

代码语言:javascript
复制
sudo apt-get install php-memcached

或者在其他操作系统中,您可以自己搞清楚




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/5931.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: