gpt4 book ai didi

php - 当数据库离线时 symfony 会发生什么?

转载 作者:行者123 更新时间:2023-11-29 01:47:13 24 4
gpt4 key购买 nike

当连接到 symfony 的数据库脱机或无法访问时,到底发生了什么?也许这个问题的答案就在我的脸上,我没有意识到,但我一直在寻找最后一段时间,但仍然空手而归。

我试图通过停止数据库服务(我正在我的 Windows 笔记本电脑上开发——部署在 LAMP 服务器上)来自己模拟(在“生产”环境中),但它只是停在那里直到它超过 PHP 执行时间限制。

我正在使用 Doctrine 运行 symfony 1.4。人们会假设它会抛出某种可捕获的异常,或者甚至可以设置连接超时,然后抛出异常。一想到客户坐在那里等待数据库查询完成 30 秒,我就忍不住感到畏缩,而这种情况永远不会发生。

如果 symfony 核心中没有任何预防措施,任何人都可以就他们如何处理它提出任何建议吗?我当然会在数据库上安装心跳监视器,但如果它出现故障,网站也需要关闭。

更新:拼凑了一个测试脚本,通过Mysqli连接到localhost数据库,它仍然达到了最大执行时间。但是,它确实为失败的连接抛出一个警告

-- 洛根

最佳答案

这取决于。如果在“开发”环境中访问该站点,它将给您一个 500 内部服务器错误,并显示如下消息:“PDO 连接错误:SQLSTATE[HY000] [2002] 无法通过套接字连接到本地 MySQL 服务器'/var/run/mysqld/mysqld.sock' (2)"和下面的堆栈跟踪(就像 Symfony 中的正常异常)。

如果您在“prod”环境中访问站点,您只会得到标准(如果您为 500 个错误创建了一个自定义的):“糟糕!发生错误服务器返回了“500 内部服务器错误”。“没有堆栈跟踪。

在任何一种情况下,它都是抛出的异常(可捕获)。这是一个 Doctrine_Connection_Exception。您可能希望在调用模型的 save() 方法时尝试/捕获此异常。

我不确定为什么要花这么长时间,只是超时了,当我在本地笔记本电脑上尝试时,它几乎立即返回错误。

关于php - 当数据库离线时 symfony 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com