关于MemcacheDB PHP客户端的问题及解决办法

本文探讨了PHP memcache客户端频繁断开MemcacheDB连接的问题,并提供了使用php-memcached客户端作为解决方案的方法。该客户端基于brian的libmemcached库,能够有效避免连接断开的情况。

http://blog.developers.api.sina.com.cn/?p=264

 

 

最近MemcacheDB邮件列表和研发部那边同事报告PHP的memcache客户端php-memcache经常出 现断连接的问题:

PHP Notice:  Memcache::get(): Server ………. (tcp 11211) failed with: Failed reading line from stream (0) with pecl-memcache 3.*
….

这个问题由来已久,我们的解释是MemcacheDB的延迟受磁盘写入影响 (checkpoint时, memtrickle时)会有一点的浮动。虽然整体延迟不是很高,但是 相比于Memcached纯内存稍高。而PHP memcache宏观上认为是cache行为,会对延 迟稍高的连接扔掉(其认为延迟高就失去cache的意义)。

解决办法是使用andreiz的php-memcached:

http://pecl.php.net/package/memcached
http://github.com/andreiz/php-memcached/tree/master

php-memcached是brian的libmemcached库的php wrapper. libmemcached是一个 前途光明的memcache协议c/c++客户端库,未来对二进制版本的支持,另外极有可能包括MemcacheDB的扩展命令rget等的支持(已经联系好作者提交patch)

我对php-memcache和php-memcached两个客户端作了简单的评估。分别set 1000 万条200字节的value,其中php-memcache表现得脆弱,连接频频断掉。而php- memcached依然保持坚挺,从未断过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值