Php MySQL数据库连接未关闭:将发生什么情况?

Php MySQL数据库连接未关闭:将发生什么情况?,php,mysql,database,performance,Php,Mysql,Database,Performance,我正在使用PHP查询我网站上的MySQL数据库。请回答以下问题: 如果我最后查询完数据库后不使用mysql\u close(),会发生什么?连接将保持打开状态?如果是,那么最多需要多少时间?如果没有,为什么 如果我在一个数据库中的多个位置打开和关闭与MySQL的连接 网页,性能如何受到影响?i、 每次需要访问单个网页上的数据库时,都会再次建立连接 mysql\u close()与性能有什么关系?我应该在每次需要访问数据库时打开一个新连接,还是只保留一个连接并在最后关闭它 如果我不关闭连接,那么如

我正在使用PHP查询我网站上的MySQL数据库。请回答以下问题:

  • 如果我最后查询完数据库后不使用
    mysql\u close()
    ,会发生什么?连接将保持打开状态?如果是,那么最多需要多少时间?如果没有,为什么
  • 如果我在一个数据库中的多个位置打开和关闭与MySQL的连接 网页,性能如何受到影响?i、 每次需要访问单个网页上的数据库时,都会再次建立连接
  • mysql\u close()
    与性能有什么关系?我应该在每次需要访问数据库时打开一个新连接,还是只保留一个连接并在最后关闭它
  • 如果我不关闭连接,那么如果用户试图 再次访问某些数据,将使用新连接还是旧连接 是否将使用开放连接

  • 与不需要时保持连接打开的资源使用相比,关闭连接的性能损失可以忽略不计。最好在完成连接后立即关闭它,并在需要时再次打开它。

    如果使用非持久性连接,所有打开的MySQL连接将在PHP脚本完成执行后自动关闭

  • 当PHP脚本在销毁阶段运行完毕时,它将自动关闭
  • 绩效将受到负面影响。打开一个新的套接字(尤其是外部数据库服务器)比在内存中保留一个指向当前连接的指针更昂贵、更耗时
  • 见答复2
  • 对数据的访问将由一个新的PHP请求执行。因此,您将有一个新的数据库连接。没问题
  • 我建议在构建阶段打开数据库连接,在脚本的整个执行过程中重新使用该连接(如果它是基于OO的,为数据库连接分配一个类变量,并在整个脚本期间使用
    $this->db
    ),然后在销毁过程中关闭它(或者根本不用关闭它,因为它无论如何都会关闭,即使没有明确声明)。

    来自php.net:

    通常不需要使用mysql_close(),因为非持久打开的链接会在脚本执行结束时自动关闭

    对于性能而言,这取决于情况、使用时间、空闲时间等(例如长时间执行)。在大多数情况下,存在一种单例模式,通过这种模式,您可以拥有一个打开的连接,并使用该打开的句柄进行所有查询。但这并不是完全正确的,因为mysql_connect本身支持:

    如果使用相同的参数再次调用mysql_connect(),则不会建立新链接,而是返回已打开链接的链接标识符。new_link参数修改此行为,并使mysql_connect()始终打开新链接,即使mysql_connect()以前使用相同的参数调用过

    所以基本上,对于短时间运行的脚本,mysql_close不是很需要