我正在使用 php::memcache 模块连接本地 memcached 服务器 (@127.0.0.1),但我不知道应该使用哪个, memcache::connect() 还是 memcache::pconnect ?memcache::pconnect 会消耗服务器的很多资源吗?
非常感谢您的回答!
Memcached 使用 TCP 连接(握手是 3 个额外的数据包,关闭通常是 4 个数据包)并且不需要任何身份验证。因此,使用持久连接的唯一好处是您不需要发送那额外的 7 个数据包,也不必担心会有几秒钟 的剩余TIME-WAIT端口。
可悲的是,牺牲这些资源的负面影响远远大于次要的好处。所以我建议不要在 memcached 中使用持久连接。
pconnect
代表持久连接。这意味着客户端(在您的情况下是脚本)将不断地打开到您的服务器的连接,这可能不是资源问题 - 更多的是缺乏可用的连接。
connect
除非您知道需要使用持久连接,否则您可能应该想要标准。
据我所知,连接到 MySQL 时管理持久连接和常规连接的相同规则也适用于 memcached。结果是,在这两种情况下,您可能都不应该使用持久连接。
In application I'm developing I use pconnect as it uses connection pool and from the view of hardware - one server keeps one connection to memcache. I don't know exactly how it works but I think memcached is smart enough to track IP of memcached client machine.
I've played with memcached for a long time and found that using memcache::getStatus shows that connections count doesn't increased when using pconnect.
You can use debug page which show memcached stats and try to tweak pconnect or connect and see what's going on.
“消耗” TCP 端口。
一个缺点是,如果一个或所有持久连接的 memcached 守护进程消失,PHP 不会收到明显的错误或警告。这是一个相当大的缺点。