2017-08-04 56 views
0

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

据我所知,持续的连接比非持久一个快得多,

我们可以设置在以下方式联系:

$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的是如此聪明,它可以自动恢复默认连接,什么是很多人仍在使用非持久连接,这是更慢了点。

+0

对不起,误解了这个问题。它不是关于创建一个持久连接,而是为了避免隐式重置。所以是的,我认为你必须通过定义'MYSQLI_NO_CHANGE_USER_ON_PCONNECT' – BNT

+0

进行重新编译,我想知道如果持续连接有隐式的“重置”,那么我们可以像使用“非持久连接”一样使用它,对吗?网络上的很多文章表示持续连接会引入意想不到的行为,我们应该在使用之前仔细思考,但官方文档指出“重置”功能实际上可以修复那些“意外行为”,所以令人困惑 – user8100646

回答

2

连接的成本很小,无论是否持久,是否有清理。

通常情况下,应该在程序开始时获得一个连接,并将其保持到结束。 (有一些例外)。

唯一一次的连接是非常明显的是,如果您获得的每个之前和连接每一个SQL查询。

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