【问题标题】:Does instantiating multiple mysqli objects in a single PHP script get optimized?在单个 PHP 脚本中实例化多个 mysqli 对象是否得到优化?
【发布时间】: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); ... 你会看到每个对象引用的不同#。 (它们不会被优化下来,你会得到一堆不同的连接资源)
  • 你是说连接不止一次不可忽视?

标签: php mysqli


【解决方案1】:

不,它将打开与数据库的新连接。每次创建mysqli类的实例,即使参数相同,也会创建一个新的实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2023-03-27
    • 2018-07-13
    相关资源
    最近更新 更多