【问题标题】:Is it a good practice to close the external connections (e.g. memcached, redis) in PHP?在 PHP 中关闭外部连接(例如 memcached、redis)是一个好习惯吗?
【发布时间】:2013-06-07 12:35:45
【问题描述】:

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

我担心的是,我的 Web 服务器最好保持与两个 memcached/redis 服务器的连接。这样当新用户请求一个php页面时,web服务器就不需要一次次连接memcached/redis了。

$redis = new Redis(); $redis -> 关闭(); (或者与 memcached 和 mysql 类似)

我不确定在这种情况下 close 的实际含义。这是否意味着与 redis 服务器紧密连接以执行此特定的 php 脚本?考虑到我之前的担忧,跟注真的会影响我的表现吗?

【问题讨论】:

  • 在处理完资源后关闭它们总是一个好主意,它使与之关联的资源可用于服务其他请求。

标签: php connection redis memcached


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-08-11
      • 2010-09-11
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2023-01-06
      • 1970-01-01
      相关资源
      最近更新 更多