【问题标题】:The most efficient way to use mysqli connection使用mysqli连接最有效的方法
【发布时间】:2017-08-04 07:41:30
【问题描述】:

我正在寻找一种使用 PHP MySQL innoDB 连接的有效方法,但无法在网上找到确凿的信息。

据我所知,持久连接比非持久连接快得多,

我们可以通过以下方式建立连接:

$instance_mysqli = new mysqli('p:127.0.0.1', 'username', 'password', 'db');

但是,从官方网站上,它说默认行为是重用时“重置”,速度较慢。 http://php.net/manual/en/mysqli.persistconns.php

mysqli 扩展通过自动调用 C-API 函数 mysql_change_user()。自动清理功能具有 优点和缺点。优点是 程序员不再需要担心添加清理代码,因为它 被自动调用。但是,缺点是代码 可能会慢一点,因为执行的代码 每次从 连接池。

那么,有没有办法将参数传递给上述构造函数以避免“重置”?唯一的方法是按照文档建议从源代码重新编译扩展?

我的另一个问题是……如果mysqli智能到可以默认自动重置连接,那还有什么意义很多人还在使用非持久连接,甚至更慢。

【问题讨论】:

  • 对不起,误解了这个问题。它不是关于创建持久连接,而是为了避免隐式重置。所以是的,我认为你必须通过定义 MYSQLI_NO_CHANGE_USER_ON_PCONNECT 重新编译
  • 我想知道持久连接是否有隐含的“重置”,那么我们可以像“非持久连接”一样使用它,对吗?网上有很多文章说持久连接引入了意外行为,我们在使用之前应该仔细考虑,但是官方文档表明“重置”功能实际上可以修复那些“意外行为”,所以很混乱

标签: php mysqli innodb


【解决方案1】:

一个连接的开销很小,不管是持久的还是不持久的,不管有没有清理。

通常,应该在程序开始时获取一个连接,并一直保持到结束。 (有一些例外。)

连接真正引人注目的唯一情况是您在每个 SQL 查询之前获取连接。

底线:担心您的索引、系统设计等,而不是获取连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2021-10-05
    • 2020-09-18
    • 2010-09-06
    • 2020-11-16
    相关资源
    最近更新 更多