2016-11-19 3 views
0

ich die multi_get Funktionalität von Memcached-Client in PHP zu testen, ich versuche, und ich weiß, dassMemcache :: get arbeitet nicht mit Anordnung von Tasten

array Memcache::get (array $keys [, array &$flags ]) 

zur Verfügung steht.

00000001 <?php 
00000002  function rand01() 
00000003  { // auxiliary function 
00000004   // returns random number with flat distribution from 0 to 1 
00000005   return (float)rand()/(float)getrandmax(); 
00000006  } 
00000007  ini_set('display_errors', 1); 
00000008  $mc=new Memcached(); 
00000009  $mc->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT); 
00000010  $mc->setOption(Memcached::OPT_REMOVE_FAILED_SERVERS,true); 
00000011  echo "return value of addServer<br>"; 
00000012  var_dump($mc->addServer("mc1",11211)); 
00000013  var_dump($mc->addServer("mc2",11211)); 
00000014  var_dump($mc->addServer("mc3",11211)); 
00000015  echo "<br>"; 
00000016  $mc->set('00010111222',"testval"); 
00000017  $mc->set('00010333444',"testval"); 
00000018  echo "<br>"; 
00000019  var_dump($mc->get(array('00010111222', '00010333444'))); 
00000020  var_dump($mc->getResultCode()); 
00000023 ?> 

Aber es gibt mir die folgende Ausgabe:

return value of addServer 
    bool(true) bool(true) bool(true) 
    Warning: Memcached::get() expects parameter 1 to be string, array given in /var/www/html/memcache.php on line 19 
    NULL int(0) 

Was bedeutet, dass die Server erfolgreich hinzugefügt werden, aber get() in Zeile 19 gibt eine Warnung für den Parameter ein Array und das zurückgegebene Objekt ist NULL . Der Rückkehrcode ist 0, was bedeutet, dass die Abfrage erfolgreich war, und Schlüssel sind in memcached vorhanden, da ich sie in Zeile 16 und 17 setze. Gibt es etwas, was ich falsch mache oder ist das ein Fehler in PHP :: Memcache?

+0

Als ein Benutzer mit mehr als 1000 Ruf, würde ich mindestens erwarten, dass Sie den Code in Zeile 39, auf dem es Fehler angezeigt würde. Aber aus Respekt werde ich nicht ablehnen. Wenn Sie jedoch meinen, Zeile 39 ist eigentlich "00000019" würde ich vorschlagen, dass Sie sich an die Fehlermeldung halten. – Xorifelse

+0

Ah ja, die Zeilennummern sind durcheinander. Es ist eigentlich Linie 19. – Wajahat

Antwort

1

Dies ist ein Memcache vs. Memcached Problem.

Memcached::get akzeptiert nur eine Zeichenfolge als erstes Argument.

http://php.net/manual/en/memcached.get.php

Memcache::get ist die Methode, die eine Zeichenfolge oder ein Array annimmt.

http://php.net/manual/en/memcache.get.php

Sie können das gleiche Ergebnis wie Looping durch die Anordnung erreichen und für jeden Wert Memcached::get($key) aufrufen.

+0

Ich denke du hast recht, ich weiß nicht wie ich das vermisst habe. Es gibt 'Memcached :: getMulti()' für 'Memcached'. Vielen Dank. – Wajahat

Verwandte Themen