最近一阵在PHP开发的时候一直困扰于memcached的版本问题。之前在开发的时候一直使用的是memcached-1.2.x,然后因为一系列的原因需要将memcached的版本提升到最新的稳定版1.4.5。upgrade之后发现很多奇奇怪怪的问题发生,以前一直没时间去看,今天仔细看了下,终于找到原因了。

问题发生的源头是delete操作,如果查看php.net上的memcache(PECL)手册的话,可以看到delete操作是可以给出第二个参数的,虽然客户端会在没有的时候给一个默认的0。现在问题就出在这个delete上,从1.4.x开始(我观察到的是1.4.5,虽然很多帖子说从1.4.3开始就有这个bug了),客户端在进行delete操作的时候,都需要附上第二个参数,默认的0必须自己给出,不能让客户端自己填上。当然,理由我还是不太明白,为什么会出现这样的情况。

附上PECL官方的bug网页:http://pecl.php.net/bugs/bug.php?id=16927