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

标签 php mysql symfony1 doctrine

当附加到 symfony 的数据库脱机或无法访问时,到底会发生什么?也许这个问题的答案就在我的脸上,而我自己却没有意识到,但我一直在寻找,但仍然空手而归。

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

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

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

更新:编写了一个测试脚本,通过 Mysqli 连接到本地数据库,但它仍然达到了最大执行时间。但是,它确实针对连接失败发出了警告

--洛根

最佳答案

这要看情况。如果在“dev”环境中访问该站点,则会出现 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/

相关文章:

javascript - 由于双击文本链接而导致重复的数据库条目

mysql - 使用动态查询搜索关键字

mysql - Symfony 1.4 迁移抛出 SQLSTATE [HY000] : General error: 1005 (err 150) - doctrine:migrate fails!

php - 如何在 Apache Web 服务器上指向要在服务器 IP 地址上打开的目录作为 URL?

php - 为什么多词 Doctrine 搜索会导致 MySQL 使用高达 300% CPU?

php 12小时格式到24小时格式时间转换

PHP/MySQL : Sanitizing user input - is this a bad idea?

php - 超薄微框架中的多部分/表单数据示例

php - 两个 while 循环从两个查询中获取数据只显示一个结果

在 sql 中使用 engine=InnoDb 将 MySql 迁移到 Hsqldb