web-dev-qa-db-ja.com

このバックエンドを使用するには、memcache拡張機能をロードする必要があります

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

何か案は?

19
Richard Knop

PHPには2つのMemcachedライブラリがあり、名前が混乱しています。

コードには最初のコードが必要です。単純なpecl uninstall memcached その後 pecl install memcache、変更してくださいphp.ini適切な.soをインクルードし、機能するはずです。

39
capi

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);に変わります。

2
john

この問題は非常に簡単に解決できます。この問題は、php memcached拡張機能をインストールしなかったために発生します。このコマンドでUbuntuにインストールしましょう

Sudo apt-get install php-memcached

または、他のOSでは自分自身を把握できます

1
Phuc