代码之家  ›  专栏  ›  技术社区  ›  Imrul

php-mysql中的数据库连接是如何工作的

  •  9
  • Imrul  · 技术社区  · 15 年前

    最好在执行每个查询后关闭连接,还是按原样放置连接,然后php将自动关闭该连接。

    哪一个更好?为什么?

    7 回复  |  直到 15 年前
        1
  •  7
  •   Gumbo    15 年前

    只打开一次连接。打开和关闭连接也需要时间。正如你所说, PHP closes open connections at the end of the runtime automatically

    所以只要打电话 mysql_connect 当您需要连接时,让php在最后关闭它。 mysql_连接 检查已经存在的连接,这样就不必担心调用 mysql_连接 使用相同的参数将每次打开一个新连接。你也可以使用 persistent connections 这可以用于不止一个脚本执行。

        2
  •  5
  •   zanbaldwin    15 年前

    其实没关系。如果您的php脚本将在脚本结束时为您关闭连接,那么您自己做这件事就没什么意义了。

    在完成所有查询后,您希望将额外的代码放入脚本中以关闭连接的唯一原因是,如果您希望释放一点内存,例如,使用gd2之类的库,脚本已经非常占用内存。

    每次查询后关闭连接,打开另一个进行另一个查询都会占用内存,浪费大量时间。总而言之,不要太麻烦!

        3
  •  2
  •   Sadat    15 年前

    如果脚本随机使用连接,则打开连接。 如果有一组作业使用了某个时间间隙的连接,那么您可以在每个组作业结束之后关闭连接。

        4
  •  1
  •   martin.malek    15 年前

    根据我的经验,最好是保持连接打开。但这取决于应用程序的行为。如果您正在进行大量计算或连接外部服务,这可能需要一些时间才能完成,那么最好在完成耗时部分后关闭连接并再次打开它。如果您没有足够的访问者,您可以达到SQL连接数的限制,那么保持连接一直打开。再打开需要一段时间。

        5
  •  0
  •   Sean A.O. Harney    15 年前

    最好使用持久连接或连接池。

        6
  •  0
  •   Ian Devlin    15 年前

    这通常是一个好的做法,关闭你打开的连接,在你进行整理。

    是否要为每个查询打开和关闭一个查询将取决于您的应用程序。如果它只与数据库很少交互,那么最好这样做。或者您可能希望保持一个连接池打开供所有人使用,只有在所有其他连接当前都在使用时才打开一个新的连接池。

        7
  •  0
  •   Piskvor left the building Rohit Kumar    15 年前

    在脚本初始化期间连接到数据库一次;在脚本执行期间保持连接打开,并通过它发送进一步的查询。

    上面是一个典型的使用场景,其中有一个运行时间很短的php脚本(可能在web服务器上)执行多个sql查询。除非脚本运行的时间超过几个小时,否则不要担心关闭查询之间的连接。

    每次连接到sql服务器时,php脚本和服务器都需要进行(相对)复杂的协商:通过网络建立连接,检查双方是否都想说mysql,检查脚本是否有连接权限,等等。保持数据库连接,它更快更高效。