我使用PHP连接MySQL。
最后,我从已弃用的 mysql _ 切换到 PDO 界面!我喜欢它,它很有效,但是一个挥之不去的问题......
我的问题:new PDO
(使用相同的凭据)是否始终为数据库创建新连接?
如果是这样的话,我就完全了!
我知道PDO中“持久连接”的选项;我 NOT 使用该选项。
使用旧的mysql_connect()函数,我可以强制使用 new_link 标志建立新的数据库连接。我的理解是正确的是,使用new PDO
,一个ALWAYS会获得新的数据库连接吗? (除非要求“持久连接” - 再一次,我不这样做。)
如果我理解正确,PDO与mysql_connect相反(假设相同的数据库凭证)PDO总是提供新的连接,除非另有说明(即除非请求“持久连接”) - 默认情况下,mysql_connect会给出相同的旧联系,除非你强迫新的。
旁注:至于为什么我要强制建立新连接,这是我实施更强大的健壮的 SQL查询执行机制的一部分。多年来我发现,当一个PHP脚本用于提供大型文件时,偶尔新的SQL查询会出现丢失的数据库连接错误(“数据库已经消失”);在这些情况下,我的补救措施 - 多年来一直运作良好 - 一直是以下算法:
1)尝试运行SQL查询
2)如果出现错误,强制建立新的数据库连接[关键步骤!],然后重新运行SQL查询。如果第二次失败,放弃并发出错误/日志;但是,在大多数情况下,问题消失了,第二次尝试有效:)
我正在尝试用PDO复制那个强大的功能......我找到了关于mysql的优秀指南 - > PDO切换(例如http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers),但是如果在使用相同凭据创建早期PDO对象的情况下实例化新PDO对象意味着新的数据库连接,我仍然很朦胧。 谢谢!
答案 0 :(得分:0)
是的,它是使用给定凭据的连接的新实例。您可以通过MySQL命令行使用MySQL SHOW FULL PROCESSLIST看到这一点,因为它创建了每个新的连接和查询,只需要快速了解它或运行一些慢速查询。
旁注;再次运行插入对于使用数据库设计和mysql配置的未经优化的进程来说有点脏,我建议重新访问有问题的项目并找到更好的方法。最好