2012-01-22 2 views
0

Я пытался заставить его работать на некоторое время, но я не могу. Я работаю над 64-битной версией Windows 7, у меня есть сервер Memcached, работающий как Service, у меня есть расширение php_memcached.dll в PHP 5.3.8, и когда я вызываю его в приложении в Codeigniter, я делаю это правильно (я думаю).memcached не работает над codeigniter 2.1.0

$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 

Спасибо за помощь :-)

ответ

1

Драйвер CI ищет модуль Apache, но в WIN мы используем в основном Memcache PHP-класса.

Попробуйте изменить линию 165 в /system/libraries/Cache/drivers/Cache_memcached.php

$this->_memcached = new Memcached(); 

Для меня это работает после изменения от Memcached до Memcache.

$this->_memcached = new Memcache(); 
+0

это не работает :-(, спасибо за помощь :-) – jonaypelluz

1

Я знаю, что это старый, но я просто столкнулся с той же проблемой.

В Windows вы должны использовать «Memcache», а не «Memcached». Чтобы сделать это, следуйте инструкциям на этой странице: http://www.leonardaustin.com/technical/how-to-install-memcached-on-xampp-on-windows-7

Затем, чтобы получить его работу в CI, вам нужно сделать две небольшие изменения в \ System \ библиотеки \ 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(); 
Смежные вопросы