jonaypelluz
jonaypelluz

Reputation: 368

memcached not working on codeigniter 2.1.0

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

Answers (2)

CashIsClay
CashIsClay

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

Sascha Scherhak
Sascha Scherhak

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

Related Questions