Я установил memcached в CentOS, выполнив следующие шаги.
Это ошибка PHP:
Fatal error: Call to a member function get() on a non-object in /home/piscolab/public_html/keepyourlinks.com/includes/funciones.php on line 22
Код:
/* MEMCACHE */ $memcache = new Memcache(); $memcache->pconnect('localhost',11211); /* checks in memcache, if not: query and save to memcache */ function cache_query($sql,$nombre,$tiempo = -1){ if($tiempo == -1) $tiempo = time() + 24*60*60*365; $consulta = $memcache->get($nombre); /* THIS is the line */ if ( $consulta === false) { $consulta = mysql_query($sql); $memcache->set($nombre,$consulta,0,$tiempo); $_SESSION['tQ']++; }else $_SESSION['tQC']++; return $consulta; }
о/* MEMCACHE */ $memcache = new Memcache(); $memcache->pconnect('localhost',11211); /* checks in memcache, if not: query and save to memcache */ function cache_query($sql,$nombre,$tiempo = -1){ if($tiempo == -1) $tiempo = time() + 24*60*60*365; $consulta = $memcache->get($nombre); /* THIS is the line */ if ( $consulta === false) { $consulta = mysql_query($sql); $memcache->set($nombre,$consulta,0,$tiempo); $_SESSION['tQ']++; }else $_SESSION['tQC']++; return $consulta; }
Я вызываю функцию так:
$result = cache_query('select * from users','all_users');
Что мне не хватает?
Объект $memcache
находится вне области действия здесь.
Добавьте следующую строку в начало своей функции:
global $memcache;
Или передайте его как параметр:
function cache_query($sql, $nombre, $memcache, $tiempo = -1) { ... } $result = cache_query('select * from users','all_users', $memcache);
Вам нужно сделать:
global $memcache;
В вашей функции.
См. Это для информации о переменной области: