Reputation: 368
I have been trying to make it work for sometime now, but I can't. I am working on a Windows 7 64bits, I have the Memcached Server running as Service, I have the php_memcached.dll extension in the PHP 5.3.8 and when I call it on the app in Codeigniter I do it the right way (I Think).
$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file'));
var_dump($this->cache->memcached->is_supported());
die();
but it throws a false so I don't know what I am doing wrong. When I call it like this:
$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file'));
$data = $this->cache->memcached->get('data_' . $idData);
I get this PHP error:
Fatal error: Call to a member function get() on a non-object in E:\workspace\example\system\libraries\Cache\drivers\Cache_memcached.php on line 50
Thanks for the help :-)
Upvotes: 0
Views: 5640
Reputation: 2320
I know this is old, but I just came across the same issue.
On Windows, you should be using "Memcache" rather than "Memcached". To do this, follow the instructions on this page: http://www.leonardaustin.com/technical/how-to-install-memcached-on-xampp-on-windows-7
Then, to get it working in CI, you'll need to make two small changes to \system\libraries\Cache\drivers\Cache_memcached.php:
In function is_supported(), replace:
if ( !extension_loaded('memcached'))
With:
if ( !extension_loaded('memcached') && !extension_loaded('memcache'))
And in function _setup_memcached(), replace:
$this->memcached = new Memcached();
With:
if(class_exists("Memcached"))
$this->_memcached = new Memcached();
else
$this->_memcached = new Memcache();
Upvotes: 1
Reputation: 11
The CI driver is looking for the Apache Module, but in WIN we use mostly the PHP-Class Memcache.
Try to change Line 165 in /system/libraries/Cache/drivers/Cache_memcached.php
$this->_memcached = new Memcached();
For me it works after changing from Memcached to Memcache.
$this->_memcached = new Memcache();
Upvotes: 1