LoopRun Barcelona 2020


(PECL memcached >= 0.1.0)

Memcached::getRetrieve an item


public Memcached::get ( string $key [, callable $cache_cb [, int $$flags ]] ) : mixed

Memcached::get() returns the item that was previously stored under the key. If the item is found and the flags is given Memcached::GET_EXTENDED, it will also return the CAS token value for the item. See Memcached::cas() for how to use CAS tokens. Read-through caching callback may be specified via cache_cb parameter.



The key of the item to retrieve.


Read-through caching callback or NULL.


Flags to control the returned result. When Memcached::GET_EXTENDED is given, the function will also return the CAS token.

Dönen Değerler

Returns the value stored in the cache or FALSE otherwise. If the flags is set to Memcached::GET_EXTENDED, an array containing the value and the CAS token is returned instead of only the value. The Memcached::getResultCode() will return Memcached::RES_NOTFOUND if the key does not exist.


Örnek 1 Memcached::get() example #1

= new Memcached();


Yukarıdaki örneğin çıktısı:


Örnek 2 Memcached::get() example #2

= new Memcached();

if (!(
$ip $m->get('ip_block'))) {
    if (
$m->getResultCode() == Memcached::RES_NOTFOUND) {
$ip = array();
    } else {
/* log error */
        /* ...       */

Sürüm Bilgisi

Sürüm: Açıklama
3.0.0 The &cas_token parameter was removed. Instead flags was added and when it is given the value of Memcached::GET_EXTENDED it will ensure the CAS token to be fetched.

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

letynsoft at gmail dot com
2 years ago
As of some version of php7 (i was not able to determine which exactly).
The $cas_token is no longer valid argument. It has been removed in favor of flags argument, as it appears to be causing issues when subclassing the Memcached class.

See https://github.com/php-memcached-dev/php-memcached/pull/214 for more details.

Basically you need to
function memcacheGet($key, $cb = null, &$cas = null) {
$m = memcacheGetObject();
defined('Memcached::GET_EXTENDED')) {
//Incompatible change in php7, took me 2 hours to figure this out, grrr
$_o = $m->get($key, $cb, Memcached::GET_EXTENDED);
$o = $_o['value'];
$cas = $_o['cas'];
  } else {
$o = $m->get($key, $cb, $cas);
miha at hribar dot info
10 years ago
This method also returns false in case you set the value to false, so in order to have a proper fault mechanism in place you need to check the result code to be certain that a key really does not exist in memcached.

= new Memcached();
$Memcached->addServer('localhost', 11211);
$Memcached->set('key', false);
var_dump($Memcached->get('key'));       // boolean false
var_dump($Memcached->getResultCode());  // int 0 which is Memcached::RES_SUCCESS

Or just make sure the values are not false :)
9 years ago
Note that this function can return NULL as FALSE, so don't make checks with === FALSE as with the old Memcache class, because it won't work. :O

Use the not (!) operator and check the result code with getResultCode() as mentioned in the documentation :)
To Top