Hackathon!
Roberto Spadim
roberto at spadim.com.br
Fri Aug 24 04:59:58 UTC 2007
CHECK WHAT I'M USING WITH PECL: (i just work with one memcache server)
it removed all wrong return from pecl library, since it's don't return
sometimes and i retry again, if the status of servers are ok and i
didn't get any return it's because i don't have anything to get
<?php
class Memcache_ext{
private $m;
private $host;
private $hostcount=0;
function Memcache_ext(){
$this->m=new Memcache;
}
function __call($f, $p){
$m=&$this->m;
if ($f!='get' && $f!='set' && $f!='add' && $f!='replace'){
$c=count($p);
if ($f=='connect' || $f=='pconnect'){
$this->host=$p;
$this->host[3]=$f;
$this->hostcount=1;
}elseif($f=='addServer')
$this->hostcount++;
if ($c==0)
return(call_user_func(array(&$m,$f)));
elseif ($c==1)
return(call_user_func(array(&$m,$f),$p[0]));
elseif ($c==2)
return(call_user_func(array(&$m,$f),$p[0],$p[1]));
elseif ($c==3)
return(call_user_func(array(&$m,$f),$p[0],$p[1],$p[2]));
elseif ($c==4)
return(call_user_func(array(&$m,$f),$p[0],$p[1],$p[2],$p[3]));
elseif ($c==5)
return(call_user_func(array(&$m,$f),$p[0],$p[1],$p[2],$p[3],$p[4]));
elseif ($c==6)
return(call_user_func(array(&$m,$f),$p[0],$p[1],$p[2],$p[3],$p[4],$p[5]));
return;
}
if ($this->hostcount!=1){
if ($f=='set')
return($m->set($p[0],$p[1],$p[2],$p[3]));
elseif ($f=='add')
return($m->add($p[0],$p[1],$p[2],$p[3]));
elseif ($f=='replace')
return($m->replace($p[0],$p[1],$p[2],$p[3]));
return($m->get($p[0]));
}
$ret=false;
$h=$this->host[0];
$pt=$this->host[1];
$to=$this->host[2];
$fc=$this->host[3];
while ($ret===false){
if ($f=='set')
$ret=@$m->set($p[0],$p[1],$p[2],$p[3]);
elseif ($f=='add')
$ret=@$m->add($p[0],$p[1],$p[2],$p[3]);
elseif ($f=='replace')
$ret=@$m->replace($p[0],$p[1],$p[2],$p[3]);
else
$ret=@$m->get($p[0]);
#if ($f=='set'){
# echo "ret=";var_dump($ret);
#}
if ($ret!==false)
break;
$st=@$m->getExtendedStats();
#echo "st=";var_dump($st);
#echo "$h:$pt\n";
if (!isset($st["$h:$pt"])){
}elseif ($st["$h:$pt"]==false){
}else
break;
@$m->close();
if ($fc=='connect')
@$m->connect($h,$pt,$to);
else
@$m->pconnect($h,$pt,$to);
$m->setServerParams($h,$pt,$to,15, true);
}
return($ret);
}
function __destruct(){
@$m->close();
}
}
#$m=new Memcache_ext;
#$m->connect('172.16.0.1',11211);
#print_r($m->getExtendedStats());
#while(1){
# $m->set('a','b');
# print_r($m->get('a'));
#}
?>
Don MacAskill escreveu:
>
> So we're having rare (maybe a dozen errors per multiple billion
> requests) errors with the PECL memcached client. The server failed
> callback is fired, but the server in question is up, has lots of open
> connections, etc etc. Other clients, like our custom PHP client,
> aren't showing any errors whatsoever.
>
> Others at the hackathon mentioned similar issues, again only at large
> scale.
>
> Since the failback callback only accepts host/port and not other
> useful data like an error message or even the command that was issued,
> it's been hard to debug and reproduce in a fixable manner.
>
> But I'd be all over it if someone could help me track it down. :)
>
> Thanks!
>
> Don
>
>
>
>
> Mikael Johansson wrote:
>> Hi, pecl/memcache is maintained and the new NON_BLOCKING_IO branch
>> adds many new features, one of which is more specific error messages.
>> Other features include UDP support, pipelining and consistent
>> hashing. But yes, during the summer not much work has been done so
>> help with stabilizing the new branch and addressing bugs that crop up
>> would be welcome. //Mikael On Wed Aug 22 11:46 , dormando sent: >-
>> pecl/memcached needs work, but no one's maintaining it? Are there
>> >alternatives? The PHP client frontier is mired. I tried to look into
>> an >error but found the same error message was copy/pasted in nine
>> different >places in the code. Not worth it. [snip]
>
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 23/08/2007 / Versão:
> 5.1.00/5104
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
>
>
More information about the memcached
mailing list