Actually, when you pass a callback, method doesn't return immediately, but waits for results and calls callback function.
Memcached::getDelayed
(PECL memcached >= 0.1.0)
Memcached::getDelayed — 複数のアイテムを要求する
説明
Memcached::getDelayed() は、keys 配列で指定した複数のキーのアイテムに対するリクエストを memcache に発行します。 このメソッドはサーバからの応答を待たずにすぐに結果を返します。 アイテムを使用したくなったときには Memcached::fetch() あるいは Memcached::fetchAll() をコールします。 with_cas が true の場合は CAS トークンの値もリクエストします。
結果を明示的に取得するのではなく、result コールバック を value_cb パラメータで指定することもできます。
パラメータ
- keys
-
要求するキーの配列。
- with_cas
-
CAS トークンの値も要求するかどうか。
- value_cb
-
result コールバック、あるいは NULL。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。 必要に応じて Memcached::getResultCode() を使用しましょう。
例
例1 Memcached::getDelayed() の例
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));
$m->getDelayed(array('int', 'array'), true);
var_dump($m->fetchAll());
?>
上の例の出力は以下となります。
array(2) {
[0]=>
array(3) {
["key"]=>
string(3) "int"
["value"]=>
int(99)
["cas"]=>
float(2363)
}
[1]=>
array(3) {
["key"]=>
string(5) "array"
["value"]=>
array(2) {
[0]=>
int(11)
[1]=>
int(12)
}
["cas"]=>
float(2365)
}
}
参考
- Memcached::getDelayedByKey() - 指定したサーバに複数のアイテムを要求する
- Memcached::fetch() - 次の結果を取得する
- Memcached::fetchAll() - 残りのすべての結果を取得する
antmat at mail dot ru
18-Feb-2011 05:16
