2009-07-30 12 views
8

W końcu mam memcache uruchomiony na moim komputerze domowym, dzięki czemu mogę w końcu zacząć z nim pracować!Jak korzystać z memcache z PHP

nie jestem wolny na dobry początek chociaż próbuję użyć kodu na

php.net @ memcache-set nie jestem w stanie uzyskać albo przykładowy kod do pracy, które zakładać one

Próbowałem to:

<?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'); 
?> 


A potem

<?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'); 
?> 


I got tych błędów z kodu powyżej;

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 


I wtedy okazało ten kod w internecie gdzieś i to działa

<?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); 
?> 


Jak mogę uzyskać przykłady z PHP. sieć do pracy?


Również chciałbym zobaczyć dowolny kod emample udziałem memcache może chcesz podzielić będę naprawdę wdzięczny widząc kilka przykładów pracy

+0

Czy memcache jest skonfigurowany z domyślnym numerem portu (11211) i czy jest ustawiony na nasłuchiwanie na wszystkich interfejsach? – Kazar

+0

oto moja seting [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts = 20 memcache.chunk_size = 8192 memcache.default_port = 11211 – JasonDavis

+0

jest to jedyny ustawienia, które mam od używam Windows w wersji – JasonDavis

Odpowiedz

10

Zdajesz sobie sprawę, że trzeba wymienić „memcache_host” z twoja nazwa hosta i/lub localhost? Czy też całkowicie pomijam ten punkt? Spróbuj również telnet localhost 11211, a następnie telnet your-memcache-host-name 11211 i sprawdź, czy uzyskasz taki sam wynik (powinieneś).

+0

ty mam rację, przeoczyłem to, dzięki – JasonDavis

2

Jeśli chcesz użyć Memcached z PHP kwerendy bazy danych, tutaj jest przykładem tego, co kiedyś:

$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

Używam menarche z php na zmniejszenie mojej bazy danych hit wykonując pewne rzeczy tak

$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); 
    } 

Możesz również uzyskać przykłady na http://php.net/manual/en/memcache.set.php !!