PHP连接的更好方法(Alive或Instant)


Better approach for PHP Connections (Alive or Instant)

我使用mysqli函数(请原谅我没有使用PDO)连接到MySQL数据库。我想知道哪种方法更好?

  1. 保持所有类上的连接处于活动状态,并在php脚本结束时关闭连接。我的意思是,直到页脚才关闭$link
  2. 在每个类上打开一个新的Connection,并在完成后立即关闭它们

请同时考虑资源和安全。谢谢!:)

这个问题有多种答案。我认为php开发人员仍然无法就关闭或保持活力做出良好决定的原因,是其他编程语言中的连接池概念(已充分记录)。例如JDBC驱动程序本身不负责池化,但其他一些包装器库负责池化并创建池化。池化意味着在一段时间内保持合理的连接,并将其用于新的查询请求。如果所有活动连接都很忙,请启动一个新的连接,也不要关闭它,因为这听起来像是应用程序正在进行的连接。

据此(http://www.percona.com/blog/2006/11/12/are-php-persistent-connections-evil/),默认情况下,mysqli连接不保持活动状态。这意味着一旦查询完成,它就会被mysql本身关闭(经过一段时间的等待)。尽管如此,在mysql中,保持活动的默认等待时间约为8小时,并且也是可配置的

我的结论是:保持某些连接打开并重用它们不仅是无害的,而且也是推荐的。但是应该处理一些类似会话范围变量之类的事情,还有一条建议是:找到一个最新的包装器或api来处理池比让你的手变得油腻更好。