Hi.

I'm testing memcached failover through a little script and I having a 
unexpected return for get/set commands.

My *code *is as follow

$servers = array(
    array("ip", 11211, 50),
array("sameip", 11213, 50),
);

$poolID = sha1(serialize($servers)); 

$mc = new Memcached( $poolID );

if ( count($mc->getServerList()) == 0 )
$mc->addServers($servers);

$mc->setOption( Memcached::OPT_COMPRESSION, TRUE );
$mc->setOption(Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY ); 
//Mas performance en la serialización de objetos
$mc->setOption(Memcached::OPT_DISTRIBUTION, 
Memcached::DISTRIBUTION_CONSISTENT ); //Mejora el sharding de MC
$mc->setOption( Memcached::OPT_LIBKETAMA_COMPATIBLE, TRUE );
$mc->setOption( Memcached::OPT_CONNECT_TIMEOUT, 50 );
$mc->setOption( Memcached::OPT_SEND_TIMEOUT, 50000 );
$mc->setOption( Memcached::OPT_RECV_TIMEOUT, 50000 );
$mc->setOption( Memcached::OPT_POLL_TIMEOUT, 50 );
$mc->setOption( Memcached::OPT_NO_BLOCK, TRUE );
$mc->setOption( Memcached::OPT_SERVER_FAILURE_LIMIT, 20 );
$mc->setOption( Memcached::OPT_RETRY_TIMEOUT, 360 );

for ( $i = 0; $i <= 100000; $i++ ) {
    $key = sha1(microtime(TRUE) . rand(0, 9999));

    $mc->set( $key, md5($key), 60 );
    var_dump( $mc->getResultCode(), $mc->getResultMessage() );
    if ($mc->getResultCode() == Memcached::RES_NOTSTORED) {
    echo "\n no se pudo guardar\n";die;
    }

    var_dump( $mc->get($key, NULL, $cas) );
    var_dump( $mc->getResultCode(), $mc->getResultMessage() );

    echo "\n\n\n";
}

*Environment*:
1 server with 2 memcached daemons (just for test)
php 5.3.10
memcached (php library) 2.1.0
memcached 1.4.15
Session support and igbinary activated

Expected:
Success message always.

Returned:
When one server is marked as disabled php still trying to get/set data to 
that server ...

Is not supposed to ignore the server until timeout has passed? 

Reply via email to