【发布时间】:2012-03-26 17:15:56
【问题描述】:
我有一个包装 mysqli 的基本模型类。当我实例化多个模型时,每个模型都调用new mysqli()。如果传递给mysqli()的参数相同,是否会为我优化并只使用一个连接?
我想问这个的另一种方式是......这是:
$mysqli1 = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$mysqli2 = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$mysqli3 = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
或多或少等同于:
$mysqli1 = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
$mysqli2 = $mysqli1;
$mysqli3 = $mysqli1;
编辑: 我记得在某处读过,如果您已经连接,它确实会返回一个副本,但我现在找不到它。
【问题讨论】:
-
试试看变量是否引用相同的对象 - 我的猜测可能不是因为文档明确指出构造函数将“打开与 MySQL 的 new 连接服务器”
-
如果我尝试过,我不知道如何确定它是否针对我进行了优化。
-
@Ryan 测试方法是到
var_dump($mysqli1); var_dump($mysqli2); ...你会看到每个对象引用的不同#。 (它们不会被优化下来,你会得到一堆不同的连接资源) -
你是说连接不止一次不可忽视?