数据库脱机时symfony会发生什么?

Log*_*bby 2 php mysql doctrine symfony1

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

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

我正在使用Doctrine运行symfony 1.4.可以假设它会抛出某种可捕获的异常,甚至可能设置连接超时然后抛出异常.我忍不住想到一个客户只是坐在那里30秒等待数据库查询完成永远不会发生的事情.

如果symfony核心中已经没有任何预防措施,那么任何人都可以就如何处理它做出任何建议吗?我当然会在数据库上安装一个心跳监视器,但如果它发生故障,该站点也需要被删除.

更新:将测试脚本放在一起,通过Mysqli连接到localhost数据库,它仍然达到最大执行时间.但是,它确实为失败的连接发出警告.

- 洛根

gre*_*ghz 5

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

如果您在"prod"环境中访问该站点,您只需获得标准(或自定义,如果您创建了500个错误):"糟糕!发生错误服务器返回'500内部服务器错误'." 没有堆栈跟踪.

在任何一种情况下,它都是抛出异常(可以捕获).这是一个Doctrine_Connection_Exception.你可能想要在调用模型的save()方法时尝试/捕获这个异常.

我不知道为什么它需要这么长时间才能超时,但是当我在我的笔记本电脑上尝试它时,它几乎立即返回错误.