我一直试图让它工作一段时间,但我不能。我正在使用Windows 7 64位,我有Memcached服务器作为服务运行,我在PHP 5.3.8中有php_memcached.dll扩展,当我在Codeigniter中的应用程序上调用它时,我正确地做到了(我认为)。
$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file'));
var_dump($this->cache->memcached->is_supported());
die();
但它会引发错误,所以我不知道我做错了什么。当我这样称呼它时:
$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file'));
$data = $this->cache->memcached->get('data_' . $idData);
我收到这个PHP错误:
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
感谢您的帮助: - )
答案 0 :(得分:1)
CI驱动程序正在寻找Apache模块,但在WIN中我们主要使用PHP-Class Memcache。
尝试更改/system/libraries/Cache/drivers/Cache_memcached.php中的第165行
$this->_memcached = new Memcached();
对我而言,从Memcached更改为 Memcache 后,它可以正常工作。
$this->_memcached = new Memcache();
答案 1 :(得分:1)
我知道这已经过时了,但我遇到了同样的问题。
在Windows上,您应该使用“Memcache”而不是“Memcached”。为此,请按照此页面上的说明操作: http://www.leonardaustin.com/technical/how-to-install-memcached-on-xampp-on-windows-7
然后,要使其在CI中运行,您需要对\ system \ libraries \ Cache \ drivers \ Cache_memcached.php进行两处小更改:
在函数is_supported()中,替换:
if ( !extension_loaded('memcached'))
使用:
if ( !extension_loaded('memcached') && !extension_loaded('memcache'))
在函数_setup_memcached()中,替换:
$this->memcached = new Memcached();
使用:
if(class_exists("Memcached"))
$this->_memcached = new Memcached();
else
$this->_memcached = new Memcache();