Расширение 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
Любые идеи?
Ответы
Ответ 1
В PHP есть две библиотеки Memcached с запутанными именами:
Ваш код нуждается в первом. Просто выполните простой pecl uninstall memcached
и затем pecl install memcache
, измените свой php.ini
, чтобы включить соответствующий .so, и он должен работать.
Ответ 2
для библиотеки 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);
Ответ 3
Я решаю эту проблему довольно просто. Эта проблема возникает из-за того, что вы не устанавливали расширение php memcached. Позвольте установить его с помощью этой команды в Ubuntu
sudo apt-get install php-memcached
Или в другой ОС вы можете выяснить себя