I got memcached installed. This is from phpinfo():
But when using it like this:
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; }
I get this error:
The memcache extension must be loaded for using this backend
Any ideas?
PHP has two Memcached libraries with confusing names :
Your code needs the first one. Just do a simple pecl uninstall memcached
and then pecl install memcache
, modify your php.ini
to include the appropiate .so and it should work.
for the PHP library that you have installed, it looks like the easiest solution would be to use a different backend - if your zend framework version allows it:
Zend_Cache_Backend_Libmemcached (http://doczf.mikaelkael.fr/1.11/en/zend.cache.backends.html)
i assume that return Zend_Cache::factory('Core', 'Memcached', $frontendOpts, $backendOpts); turns into return Zend_Cache::factory('Core', 'Libmemcached', $frontendOpts, $backendOpts);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With