【发布时间】: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重新编译 -
我想知道持久连接是否有隐含的“重置”,那么我们可以像“非持久连接”一样使用它,对吗?网上有很多文章说持久连接引入了意外行为,我们在使用之前应该仔细考虑,但是官方文档表明“重置”功能实际上可以修复那些“意外行为”,所以很混乱