0

从 PHP 代码发出 MySQL/SQL 查询时,必须首先建立与数据库的连接。

请您告诉我,我是否应该仅在用户的 Web 会话开始时,或者在加载新页面时,或者在每个 MySQL/SQL 查询之前建立与数据库的连接?

我认为当不必要地与数据库建立连接的次数过多时,我会消耗不必要的系统资源。因此,我希望以最少的必要时间连接数据库。

4

4 回答 4

2

必须时,您应该始终连接数据库。想象一下,谷歌或其他机器人在几秒钟内大量访问您的应用程序。有时,您的所有内容都将从您的缓存系统传送。

此外,重新打开数据库连接将直接花费您等待用户并由于上下文切换而消耗更多内存。您应该在需要时连接数据库,并且不必关闭它,因为当您的脚本执行结束时,您的数据库连接将自动结束。

于 2012-11-17T23:30:54.640 回答
1

您应该在页面加载时连接到数据库。

为了最大限度地减少连接时间开销,请使用持久连接。

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass,
    array(PDO::ATTR_PERSISTENT => true));
?>
于 2012-11-17T23:31:23.903 回答
1

如果您没有打开持久连接(是吗?),那么当脚本结束时(即每个页面)自动关闭连接。

而且,打开连接的执行不会消耗资源(好吧,确实如此,但时间很短)。保持开放的连接确实如此。

于 2012-11-17T23:33:04.760 回答
1

你需要取得适当的平衡。每个部分都有它的问题。让我们回顾一下所有三种可能性

持久的 MySQL 连接

优点:加载一次后忘记

缺点:您需要确保自己终止任何不再处于活动状态的连接。此外,休眠连接仍会使用一些资源。不推荐,因为它的唯一好案例是大量请求,此时您很可能希望集群您的数据库服务器,而持久连接往往会对此造成严重破坏。

一查询一请求模型

优点:构建和忘记

缺点:极端的资源使用。

好的解决方案是适当的平衡。当您第一次真正需要它时加载您的 DBH,并保留它直到您的脚本结束,此时您应该释放它使用的所有资源并终止它。这保证您将使用所需的最少资源完成所有工作。

于 2012-11-17T23:33:22.650 回答