与标题一样,在创建具有相同DSN参数(用户名,主机名,密码等)的多个PDO对象时,所有实例是否都与引擎盖下的数据库具有相同的链接?当然它们都是PDO的不同实例,但在较低层次上,与所有这些实例相关的数据库链接是否相同?
当使用相同的参数多次调用mysql_connect()时,它的工作方式将返回使用相同参数调用的相同链接。
http://uk1.php.net/mysql_connect
如果使用相同的参数对mysql_connect()进行第二次调用,则不会建立新链接,而是会返回已打开链接的链接标识符。
按要求更新示例...
$con_1 = new PDO($db_type . ':host=' . $db_host . ';dbname=' . $db_name, $db_user, $db_pass);
$con_2 = new PDO($db_type . ':host=' . $db_host . ';dbname=' . $db_name, $db_user, $db_pass);
$ con_1和$ con_2是否与实际数据库具有相同的链接?
UPDATE 删除了基准,因为$ db被覆盖了。
答案 0 :(得分:1)
不,默认情况下,PDO会打开一个新连接 - 即使用相同的dsn(和凭证)调用它也是如此
但请查看@ Phil的评论。 (谢谢!:) ...您可以将PDO::ATTR_PERSISTENT
与构造函数的$attributes
参数一起传递,如果要重用连接,则将其设置为true
。