我有一个旧版PHP / MySQL应用程序,它调用mysql_connect()。现有的大量下游代码mysql_query()使用此连接直接或通过包装进行调用。
mysql_query()
对于我在应用程序上开发的新代码,我想开始使用PDO。
如果我使用相同的主机/用户/密码/ dbname凭据建立PDO连接,那么我是否很幸运,在幕后,PHP将重新使用原始连接?还是PHP将创建与服务器的两个不同的连接(虽然完全可以理解,但这是不希望的)?
谢谢!
如果您使用两个不同的API(即mysql_*PDO和PDO),PHP将生成两个不同的连接。
mysql_*
并且,作为“证明”,请考虑以下部分代码:
$db = mysql_connect('localhost', 'USER', 'PASSWORD'); $pdo = new PDO('mysql://@localhost/astralblog', 'USER', 'PASSWORD'); sleep(5);
运行此命令将在MySQL服务器上导致两个不同的连接-它将hibernate5秒钟:
mysql> show processlist; +----+------------+-----------------+------------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------------+-----------------+------------+---------+------+-------+------------------+ | 41 | astralblog | localhost:46551 | astralblog | Sleep | 188 | | NULL | | 42 | astralblog | localhost:46552 | astralblog | Sleep | 188 | | NULL | | 43 | astralblog | localhost | astralblog | Query | 0 | NULL | show processlist | | 64 | astralblog | localhost | NULL | Sleep | 4 | | NULL | | 65 | astralblog | localhost | NULL | Sleep | 4 | | NULL | +----+------------+-----------------+------------+---------+------+-------+------------------+ 5 rows in set (0,00 sec)
(有问题的连接是最后两个连接,当我启动PHP脚本时出现,并在5秒后消失)