Strange return codes from PHP memcache set functions

Anthony Volodkin anthonyv at brainlink.com
Sat Nov 18 03:19:27 UTC 2006


Hi,

For the future readers of this list:

It seems that the issue I ran into can happen if you try to store a 0 
(as a value) using PHP/memcached.

The 0 will get stored correctly, however, several things may happen upon your attempt to retrieve this 0:

- The memcache client may attempt to failover (if enabled+using multiple 
servers) onto another server (potentially causing subsequent memcache accesses to fail)

- Because a 0 is also "false" error-detecting code (a simple "or" example 
below) will be triggered making it difficult to tell if you really received a 0 or whether 
something failed.

So there, hopefully will save someone some debugging. :)

--
Anthony Volodkin


On Mon, 13 Nov 2006, Anthony Volodkin wrote:

> Hi,
>
> Running memcached 1.2 on a set of FreeBSD 4.10, 5.4, 5.5 machines.  Using 
> Apache 2.2.3 with PHP 5.1.6 and pecl-memcache 2.1.0.
>
> As per the docs, a lot of my code is similar to:
>
> $memcache->set(md5($variable), $data, false, 7200) or error_log ("Failed to 
> set data at the server");
>
> While reviewing my error logs, I found tons of these errors.  Oddly, my 
> application has been working fairly well (with cache).
>
> I've went further and captured some memcached traffic (ngrep -s 128 "" src 
> port 11211) on one of my web servers and found no error "ERR" responses, but 
> mostly "STORED" and "NOT FOUND", which is healthy.
>
>
> How can I further troubleshoot this?  While things are generally working, 
> this really doesn't seem right.
>
>
> Thanks,
>
> Anthony Volodkin
>


More information about the memcached mailing list