在PHP中关闭外部连接(例如memcached, redis)是一个好做法吗?


Is it a good practice to close the external connections (e.g. memcached, redis) in PHP?

我的Memcached服务器和Redis服务器与我的web服务器不同,因此在PHP脚本中,我必须连接到这两个外部ip。

我担心的是,这将是更好的为我的web服务器保持连接到两个memcached/redis服务器。这样,当新用户请求一个php页面时,web服务器就不需要一次又一次地连接到memcached/redis。

$redis = new redis ();$redis -> close();(或者类似的memcached和mysql)

我不确定在这种情况下close到底是什么意思。这是否意味着与redis服务器的紧密连接来执行这个特定的php脚本?考虑到我之前的担忧,接近会影响我的表现吗?

实际上并没有"关闭"与服务器的实际连接。这实际上更多的是应用程序内部的内存管理问题,而不是服务器之间的网络/基础设施问题。考虑这样一种情况:您有一个正在运行的程序,它可以实例化任意数量的对象。close()方法允许对这些对象进行销毁和垃圾收集。如果您创建了数百个实例而没有在它们完成时关闭它们,那么您最终会在应用程序中出现内存泄漏。

如果您始终只有一个连接,并且您想知道是否在每次需要使用该连接时关闭并重新打开该连接,请放心,这就是连接池的作用。更多信息请点击这里。我知道Predis使用连接池。不确定Php使用什么库与Memcached接口