Result コールバック
Result callable が起動されるのは、 Memcached::getDelayed() あるいは Memcached::getDelayedBykey() メソッドで結果セットの各アイテムに対してコールしたときです。 このコールバックに渡されるのは、Memcached オブジェクトと、 アイテム情報を含む配列です。 このコールバックは何も返す必要がありません。
例1 Result コールバックの例
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$items = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);
$m->setMulti($items);
$m->getDelayed(array('key1', 'key3'), true, 'result_cb');
function result_cb($memc, $item)
{
var_dump($item);
}
?>
上の例の出力は、 たとえば以下のようになります。
array(3) { ["key"]=> string(4) "key1" ["value"]=> string(6) "value1" ["cas"]=> float(49) } array(3) { ["key"]=> string(4) "key3" ["value"]=> string(6) "value3" ["cas"]=> float(50) }
+add a note
User Contributed Notes 1 note
edwarddrapkin at gmail dot com ¶
15 years ago
I was having trouble making method calls with the result callbacks in getDelayed, so I emailed the developer.
If you want to use a non-static method as a callback, use the following format: array($obj, 'method'); for example:
<?php
class foo {
private $M = false;
public function __construct() {
$this->M = new Memcached();
$this->M->addServer('localhost', 11211);
$this->M->set('a', 'test');
}
public function test() {
$this->M->getDelayed(array('a'), false, array($this, 'fun'));
}
public function fun() {
echo "Great Success!";
}
}
$f = new foo();
$f->test();
?>
or, alternatively:
<?php
class foo {
public $M = false;
public function __construct() {
$this->M = new Memcached();
$this->M->addServer('localhost', 11211);
$this->M->set('a', 'test');
}
public function fun() {
echo "Great Success!";
}
}
$f = new foo();
$f->M->getDelayed(array('a'), false, array($f, 'fun'));
?>
Works great, thanks Andrei :)
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google