我正在使用php :: memcache模块连接本地memcached服务器(@ 127.0.0.1),但我不知道应该使用哪一个,memcache :: connect()或memcache :: pconnect? memcache :: pconnect会占用服务器的许多资源吗?
非常感谢您的回答!
答案 0 :(得分:7)
Memcached使用TCP连接(握手是3个额外的数据包,关闭通常是4个数据包),并且不需要任何身份验证。因此,使用持久连接的唯一好处是您不需要发送额外的7个数据包,也不必担心剩余的TIME-WAIT端口几秒钟。
遗憾的是,牺牲这些资源的不利因素远远大于小的上升空间。所以我建议不要在memcached中使用持久连接。答案 1 :(得分:2)
pconnect
代表持久连接。这意味着客户端(在您的情况下是脚本)将始终与您的服务器建立连接,这可能不是资源问题 - 更多的是缺少可用的连接。
除非您知道需要使用持久连接,否则您可能需要标准connect
。
答案 2 :(得分:1)
据我所知,连接到MySQL时管理持久连接与常规连接的rules同样适用于memcached。结果是,你可能不应该在任何一种情况下使用持久连接。
答案 3 :(得分:0)
“消耗”TCP端口。
答案 4 :(得分:0)
在我正在开发的应用程序中我使用pconnect,因为它使用连接池,并且从硬件的角度来看 - 一个服务器保持与memcache的一个连接。我不确切知道它是如何工作的,但我认为memcached非常智能,可以跟踪memcached客户端机器的IP。
我玩memcached很长时间了,发现使用memcache :: getStatus显示使用pconnect时连接数没有增加。
您可以使用显示memcached统计信息的调试页面,尝试调整pconnect或连接,看看发生了什么。
答案 5 :(得分:0)
一个缺点是如果一个或所有持久连接的memcached守护进程消失,PHP就不会出现明显的错误或警告。这是一个非常大的缺点。