【问题标题】:How does database connection works in php-mysql数据库连接如何在 php-mysql 中工作
【发布时间】:2009-09-09 11:31:50
【问题描述】:

是在每次查询执行完毕后关闭连接还是将连接保持原样,然后php会自动关闭该连接。

哪个更好,为什么?

【问题讨论】:

    标签: php mysql database database-connection


    【解决方案1】:

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

    因此,只要您需要连接,只需调用 mysql_connect 并让 PHP 在最后关闭它。 mysql_connect 检查已经存在的连接,因此您不必担心使用相同的参数调用 mysql_connect 每次都会打开一个新连接。您还可以使用persistent connections,它可以用于不止一个脚本执行。

    【讨论】:

      【解决方案2】:

      这并不重要。如果您的 PHP 脚本要在脚本结束时为您关闭连接,那么您自己做这件事并没有多大意义。

      在完成所有查询后,您希望在脚本中添加额外代码以关闭连接的唯一原因是,如果您想释放一点内存,例如使用 GD2 之类的库,您的脚本已经占用了大量内存。

      在每次查询后关闭连接,然后打开另一个查询来执行另一个查询,这会占用大量内存,并且会浪费大量时间。总而言之,不要打扰!

      【讨论】:

        【解决方案3】:

        如果您的脚本随机使用连接,请打开连接。 如果有一组作业正在使用特定时间间隔的连接,那么您可以在每个组作业之后关闭连接。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

            使用持久连接或连接池可能会更好。

            【讨论】:

              【解决方案6】:

              关闭打开的连接通常是一种很好的做法,并在进行过程中进行整理。

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

              【讨论】:

                【解决方案7】:

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

                上面是一个典型的使用场景,你有一个短期运行的 PHP 脚本(可能在网络服务器上)执行多个 SQL 查询。除非您的脚本运行时间超过几个小时,否则不要担心关闭查询之间的连接。

                每次连接 SQL 服务器时,PHP 脚本和服务器都需要经过一个(相对)复杂的协商:通过网络建立连接,检查双方是否要说 MySQL,检查脚本有权连接等。保持数据库连接,它更快更高效。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-03-17
                  • 2017-06-05
                  • 1970-01-01
                  • 2010-12-13
                  相关资源
                  最近更新 更多