php - 我什么时候应该从 php 脚本连接到我的数据库?

标签 php mysql

我的网站上有使用数据库的页面,也有不使用数据库的页面。

每当我需要数据库时,我都会使用 $conn = connect() 进行连接。但这意味着我需要把它放在任何需要的地方。如果我把它放在一个包含文件中并将该文件放入每个页面中,即使不需要数据库,它也会连接。这是个好主意吗?在不需要时创建连接会导致问题或其他问题,还是应该只在需要时连接?

最佳答案

在不需要时连接到数据库会引入少量本可以避免的开销。如果您需要您的页面尽可能快地运行,那么您可以通过避免不必要的数据库连接来进行优化。

这表示多少开销占您的 PHP 总执行时间的比例各不相同,例如,如果您的 PHP 脚本简单快速,则数据库连接按比例占总时间浪费的比例较大。如果您的 PHP 脚本做了很多其他事情,那么数据库连接在总时间中所占的百分比就较小。

数据库连接的速度也可能会有所不同,具体取决于服务器的速度、MySQL 是否配置了 DNS 依赖性等。

当我在 Zend Framework 上工作时,我们实现了“惰性”连接。您可以随时创建 Zend_Db_Adapter 对象的实例,但该类不连接到类构造函数。它会在您运行第一个查询时(或当您显式调用 getConnection() 方法时)连接到数据库。

另一个考虑因素是,当您完成运行查询后,您要多快断开与数据库的连接。

假设您每秒处理 1000 个 PHP 请求(平均每毫秒一个),并且您的每个 PHP 请求持续 100 毫秒。因此,在任何给定时刻,您平均可能有 100 个 PHP 请求在进行中。如果您的 PHP 代码做的第一件事是连接到数据库,而它做的最后一件事是断开与数据库和其他资源的连接(通过自动请求清理),那么您随时可能还有 100 个事件的数据库连接。

但是,如果您延迟连接到数据库,并在查询完数据库后立即断开连接,并避免在某些请求上完全连接,那么平均而言,您的并发数据库 session 数会少得多。

这有助于减少数据库服务器上的资源使用,允许更高的吞吐量和每秒完成更多的 PHP 请求。

关于php - 我什么时候应该从 php 脚本连接到我的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938554/

相关文章:

php - 用于管理布局的 Laravel 主题

javascript - 当用户关闭选项卡或窗口时销毁 session

mysql - 如何从旧的(非 ruby​​)应用程序获取数据到新的(ruby)应用程序?

php - 无法通过 php 中的 shell_exec() 函数运行 wkhtmltopdf 命令,但相同的命令在命令行上有效

php - 确定两个用户是否通过 friend 的 friend 建立联系

php - 如何在用户按下按钮后将进度更新从 PHP 推送到页面?

php - 如何在执行 ON DUPLICATE KEY 时保留数据?

mysql - 从多个列获取不同的值(包括联接)

php - 如何检索ZF2中插入行的id?

mysql - 在 mysql 数据库上修复字符集和排序规则的最简单方法?