2009-07-30 2 views
8

Наконец-то я получил memcache, запущенный на моем домашнем компьютере, поэтому я могу начать с ним развиваться наконец!Как вы используете memcache с PHP

Я не прочь к хорошему началу, хотя я пытаюсь использовать код на

php.net @ memcache-set Я не могу получить или пример кода для работы, что они отправляют

Я попытался это:

<?php 
/* procedural API */ 
$memcache_obj = memcache_connect('memcache_host', 11211); 
memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30); 
echo memcache_get($memcache_obj, 'var_key'); 
?> 


А потом

<?php 
/* OO API */ 
$memcache_obj = new Memcache; 
$memcache_obj->connect('memcache_host', 11211); 
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50); 
echo $memcache_obj->get('var_key'); 
?> 


И получил эти ошибки из приведенного выше кода;

Warning: Memcache::connect() [memcache.connect]: Can't connect to memcache_host:11211, A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060) in C:\webserver\htdocs\test\memcache\index.php on line 36 

Warning: Memcache::set() [memcache.set]: Failed to extract 'connection' variable from object in C:\webserver\htdocs\test\memcache\index.php on line 42 

Warning: Memcache::get() [memcache.get]: Failed to extract 'connection' variable from object in C:\webserver\htdocs\test\memcache\index.php on line 44 


Затем я нашел этот код в сети где-то и делает работу

<?php 
$memcache = new Memcache; 
$memcache->connect('localhost', 11211) or die ("Could not connect"); 

$tmp_object = new stdClass; 
$tmp_object->str_attr = 'test'; 
$tmp_object->int_attr = 123; 
// add cache 
$memcache->set('key', $tmp_object, false, 30) or die ("Failed to save data at the server"); 
echo "Store data in the cache (data will expire in 30 seconds)<br/>\n"; 
// get cache 
$get_result = $memcache->get('key'); 
echo "Data from the cache:<br/>\n"; 
var_dump($get_result); 
?> 


Как я могу получить примеры из PHP. сеть работать?


Кроме того, я хотел бы видеть любой emample код с участием кэша памяти вы можете поделиться я бы очень признателен видеть некоторые рабочие примеры

+0

Установлен ли memcache с номером порта по умолчанию (11211) и настроен ли он на прослушивание на всех интерфейсах? – Kazar

+0

вот мой SETING [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts = 20 memcache.chunk_size = 8192 memcache.default_port = 11211 – JasonDavis

+0

, что является единственной настройкой, которые я имею, так как я использую окно версию – JasonDavis

ответ

10

Вы понимаете, что вам нужно заменить «memcache_host» с ваше имя хоста и/или localhost? Или я пропущу точку целиком? Также попробуйте telnet localhost 11211, а затем telnet your-memcache-host-name 11211 и посмотрите, получится ли у вас тот же результат (вам нужно).

+0

вы прав, я упустил это, спасибо – JasonDavis

2

Если вы хотите использовать Memcached с PHP для запроса к базе данных, вот пример того, что я использовал:

$memcache = new Memcache; 
$memcache->connect('127.0.0.1', 11211); 
$qry = QUERY; 
$C = connection to ur database; 
findValue($qry, $c); 

    function findValue($qry,$c) 
    { 
     $id = md5($qry); 

     if ($gotten = $memcache->get($id)) { 
       echo $id." retrieved from memcached </br> "; 
       return $gotten; 
     } else { 
      ### Daemon running but it was NOT cached 
      echo " from database (was NOT cached)"; 
      # Never mind - fetch it and store for next time! 
      $gotten = dbfetch($qry,$c); 
      $memcache->set($id,$gotten); 
      return $gotten; 
     } 
    } 
1

Я использую менархе с PHP для уменьшения моей базы данных хита, делая некоторые вещи, как это

$memcache = new Memcache; 

    //Ip address and and port number. 
    $memcache->connect('192.168.xxx.xxx', 'xxxx'); 

    //Fetching data from memcache server 
    $arrobj = $memcache->get("arrobj"); 

    if(false == is_array($arrobj)) { 

     $arrobj = data retrieve from Database. 

     //Storing data in memcache server for 100 sec. 
     $memcache->set("arrobj", $arrobj, MEMCACHE_COMPRESSED, 100); 
    } 

Также вы можете получить примеры на http://php.net/manual/en/memcache.set.php !!

Смежные вопросы