处理两个不同数据库时,Code Igniter 中 mysql pconnect 的正确设置
Posted
技术标签:
【中文标题】处理两个不同数据库时,Code Igniter 中 mysql pconnect 的正确设置【英文标题】:Correct setting for mysql pconnect in Code Igniter when handling two different databases 【发布时间】:2011-12-30 01:39:26 【问题描述】:您好,我想确认一下我是否对 mysql pconnect 进行了正确设置,默认情况下,此配置的 CI 配置设置为 TRUE,在研究了更多帖子和参考资料后,建议将其设置为 FALSE 以避免诸如获取“MYSQL Server 已消失”之类的问题。我决定将其设置为 FALSE,因为在 CI 驱动程序 mysql 中有一个条件,如果 pconnect 设置为 false,它将告诉 CI 在使用 2 个数据库时进行重新连接。目前我的应用程序有两种数据库配置,一种用于 mysql,一种用于 oci8。如果可能的话,我想就此事发表意见,详细解释为什么应该使用它们。谢谢。
【问题讨论】:
【参考方案1】:我选择自己禁用 pconnect(或者,更确切地说,使用禁用它的 mysqli 驱动程序),因为发现几个空闲连接卡在休眠状态(这导致我达到并发连接限制)。这发生在少数情况下,包括未正常处理的失败事务、未释放持久连接的应用程序错误等。
我确信在运行稳定、经过测试的代码的生产环境中,我的许多问题会更容易控制,但我不知道有多少“错误”只是 pconnect 细微差别的残余影响。我已经禁用它,从那以后没有任何问题。如果我遇到连接开销非常昂贵的扩展问题,我会在遇到它时处理它(从不,永远,过早优化!)。目前,我可以通过操作码和内存缓存很好地控制这一点,并且复杂的数据库查询不是问题。
据我了解,mysqli 驱动程序较新,如果不是大多数人需要的,我相信这些人不会默认禁用 pconnect...
【讨论】:
是的,但是禁用 pconnect 后 Code Igniter 会自动重新连接吗?或者我还需要在我的控制器中配置它吗? 如果可以,请尝试一下。我在我的一个新项目上关闭了 pconnect(当我记得它默认打开时),一切都可以无缝运行。 我应该澄清一下:我将驱动程序切换到默认禁用 pconnect 的“mysqli”。我无法评论禁用 pconnect 与其他驱动程序的影响。以上是关于处理两个不同数据库时,Code Igniter 中 mysql pconnect 的正确设置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Code Igniter REST_Controller 定义内容类型