2009-07-30 8 views
8

Ich habe Memcache endlich auf meinem Heim-PC laufen, damit ich endlich mit der Entwicklung beginnen kann!Wie benutze ich memcache mit PHP

Ich bin nicht auf einen guten Start, obwohl ich den Code versuchen auf der Verwendung

php.net @ memcache-set Ich bin nicht in der Lage entweder Beispielcode erhalten zu arbeiten, dass sie

poste ich dies versucht:

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


Und dann

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


Und bekam diese Fehler aus dem Code oben;

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 


fand ich diesen Code dann auf dem Netz irgendwo und es tut

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


arbeiten Wie kann ich die Beispiele von PHP zu bekommen. net zu arbeiten, obwohl?


Auch würde ich gerne jede emample Code sehen memcache denen Sie könnte ich wirklich einige Arbeitsbeispiele schätzen sehen

+0

Wurde Memcache mit der Standard-Portnummer (11211) eingerichtet, und ist es so eingestellt, dass es alle Schnittstellen überwacht? – Kazar

+0

hier sind meine seting [Memcache] memcache.allow_failover = 1 memcache.max_failover_attempts = 20 memcache.chunk_size 8192 = memcache.default_port = 11211 – JasonDavis

+0

, die nur Einstellungen, die ich habe, da ich eine Windows-Version – JasonDavis

Antwort

10

Sie erkennen, dass Sie „memcache_host“ ersetzen müssen, wäre teilen wollen mit Dein Hostname und/oder Localhost? Oder verpasse ich den Punkt komplett? Versuchen Sie auch, telnet localhost 11211 und dann telnet your-memcache-host-name 11211 und sehen Sie, ob Sie das gleiche Ergebnis erhalten (Sie sollten).

+0

bin mit Ihnen sind richtig, ich habe das übersehen, danke – JasonDavis

2

Wenn Sie Memcached mit PHP für eine Datenbank-Abfrage verwenden möchten, hier ist ein Beispiel dafür, was ich verwendet:

$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

ich mit PHP bin mit der Menarche für meine Datenbank, indem Sie einige Sache wie diese getroffen reduzieren

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

Auch können Sie die Beispiele bei http://php.net/manual/en/memcache.set.php erhalten !!