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?