Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP'强制创建新的数据库连接;s PDO连接到MySQL_Php_Mysql_Database_Pdo_Connection - Fatal编程技术网

如何使用PHP'强制创建新的数据库连接;s PDO连接到MySQL

如何使用PHP'强制创建新的数据库连接;s PDO连接到MySQL,php,mysql,database,pdo,connection,Php,Mysql,Database,Pdo,Connection,我使用PHP连接到MySQL 最后,我从弃用的mysql\uuz切换到PDO接口!我喜欢它,而且效果很好,但有一个挥之不去的问题 我的问题:使用相同凭据的新PDO是否总是创建到数据库的新连接? 如果是这样,那我就准备好了 我知道PDO中的“持久连接”选项;我不使用这个选项 使用旧的mysql_connect()函数,我可以使用new_link标志强制建立新的数据库连接。我的理解正确吗,使用新的PDO,总是会获得新的数据库连接?(除非请求“持久连接”——我也不这样做。) 如果我理解正确,PDO与m

我使用PHP连接到MySQL

最后,我从弃用的mysql\uuz切换到PDO接口!我喜欢它,而且效果很好,但有一个挥之不去的问题

我的问题:使用相同凭据的
新PDO是否总是创建到数据库的新连接?
如果是这样,那我就准备好了
我知道PDO中的“持久连接”选项;我不使用这个选项

使用旧的mysql_connect()函数,我可以使用new_link标志强制建立新的数据库连接。我的理解正确吗,使用
新的PDO
,总是会获得新的数据库连接?(除非请求“持久连接”——我也不这样做。)

如果我理解正确,PDO与mysql_connect的相反之处在于(假设数据库凭据相同),PDO总是提供新连接,除非另有规定(即,除非请求“持久连接”)——而默认情况下,mysql_connect将提供相同的旧连接,除非您强制提供新连接


旁注:至于我为什么要强制建立新连接,这是我实现更健壮的SQL查询执行机制的一部分。多年来我发现,当一个PHP脚本用于服务大文件时,偶尔一个新的SQL查询会出现数据库连接丢失错误(“数据库已经消失”);在这些情况下,我的补救办法——多年来一直行之有效——是以下算法:
1) 尝试运行SQL查询
2) 如果出现错误,请强制建立新的数据库连接[critical step!],然后重新运行SQL查询。如果第二次失败,则放弃并发布错误/日志;但是,在大多数情况下,问题消失了,第二次尝试成功了:)

我正试图用PDO复制那个健壮的函数。。。我在mysql->PDO切换(例如)上找到了很好的指南,但我仍然不清楚在使用相同凭据创建早期PDO对象的情况下,实例化新PDO对象是否意味着新的数据库连接。

谢谢

是的,这是使用给定凭据的连接的新实例。您可以通过MySQL命令行在MySQL SHOW FULL PROCESSLIST中看到这一点,因为它会创建每个新的连接和查询,只需加快速度或运行一些缓慢的查询即可

在旁注上;对于使用数据库设计和mysql配置的未优化流程来说,再次运行insert是一个有点脏的解决方法,我建议重新访问有问题的项目,并找到一个更好的流程方法。最好的