Memcachedをインストールしました。これはphpinfo()からです:
しかし、次のように使用すると:
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
何か案は?
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);に変わります。
この問題は非常に簡単に解決できます。この問題は、php memcached拡張機能をインストールしなかったために発生します。このコマンドでUbuntuにインストールしましょう
Sudo apt-get install php-memcached
または、他のOSでは自分自身を把握できます