文字

结果回调

Result callbacks 方式在通过 Memcached::getDelayed() Memcached::getDelayedBykey() 方法获取元素后,为结果集中每个元素调用一次。 回调函数可以接收到一个Memcached对象合一个数组描述的元素信息,此回调函数不需要返回任何信息。

Example #1 结果回调示例

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

用户评论:

[#1] edwarddrapkin at gmail dot com [2009-03-11 17:54:11]

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->= 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->= 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 :)

上一篇: 下一篇: