Mysqli - 当使用 mysql 打开与同一主机但不同数据库的 2 个连接时,mysqli 打开一次连接吗?
Mysqli - When opening 2 connections to the same host with mysql, but different databases, does mysqli open the connection once?
当我遇到这样的情况时:
$databaseA = new mysqli($host,$user,$pass,"databaseA");
$databaseB = new mysqli($host,$user,$pass,"databaseB");
当我定义 $databaseB
时,mysqli 是尝试重新打开与 $host
的连接,还是使用来自 $databaseA
的缓存连接?
谢谢
对于每个 mysqli-object 都有一个单独的连接。
试试
SHOW FULL PROCESSLIST;
在您的 MySQL 服务器上运行时,如果实施了您的示例,您将看到从同一主机连接的两个不同进程。
假设您有充分的理由使用两个不同的数据库,那么使用单个连接进行此操作的唯一方法是使用有权访问这两个数据库的用户。它会是这样的:
$db = new mysqli($host,$user,$pass); // connect to the MySQL server without specifying a database
mysqli_select_db('databaseA', $db); // Specify your default/most-used database
如果您没有在查询中明确指定 databaseB,MySQL 将使用默认值 (databaseA)。因此,从 databaseB 获取一列并从 databaseA 获取两列的查询将如下所示:
$query = "SELECT databaseB.table.column, table.column, table.column2";
当我遇到这样的情况时:
$databaseA = new mysqli($host,$user,$pass,"databaseA");
$databaseB = new mysqli($host,$user,$pass,"databaseB");
当我定义 $databaseB
时,mysqli 是尝试重新打开与 $host
的连接,还是使用来自 $databaseA
的缓存连接?
谢谢
对于每个 mysqli-object 都有一个单独的连接。
试试
SHOW FULL PROCESSLIST;
在您的 MySQL 服务器上运行时,如果实施了您的示例,您将看到从同一主机连接的两个不同进程。
假设您有充分的理由使用两个不同的数据库,那么使用单个连接进行此操作的唯一方法是使用有权访问这两个数据库的用户。它会是这样的:
$db = new mysqli($host,$user,$pass); // connect to the MySQL server without specifying a database
mysqli_select_db('databaseA', $db); // Specify your default/most-used database
如果您没有在查询中明确指定 databaseB,MySQL 将使用默认值 (databaseA)。因此,从 databaseB 获取一列并从 databaseA 获取两列的查询将如下所示:
$query = "SELECT databaseB.table.column, table.column, table.column2";