我知道一些代码会在某个时刻达到最大超时。
我尝试使用try-catch来处理这个错误,但我刚刚被告知超时无法通过这种方式捕获。
有没有办法可以捕获错误,或计算处理时间并在错误到达超时之前处理错误?
答案 0 :(得分:1)
最长执行时间是PHP错误而不是PHP异常,因此您的错误处理代码将无法捕获实际不存在的异常。执行时间限制实际上是PHP服务器杀死基本上失去控制的功能的最后手段。
您真的需要研究为什么数据库代码需要30秒才能执行并解决代码/数据库问题。另一个(不推荐)选项是将PHP中的最大执行时间增加到适合您代码的时间。
答案 1 :(得分:1)
正如iTom
正确提到的,首先你需要弄清楚,为什么你的代码需要30秒。
如果预期&你正在做一些数据库更新然后在drupal,我们有处理这个。您需要使用 Drupal批处理API 。
点击此处查看详情:https://api.drupal.org/api/drupal/includes!form.inc/group/batch/7
允许表单处理分布在多个页面上的功能 请求,从而确保处理不会中断 因为PHP超时,同时允许用户接收反馈 关于正在进行的行动的进展。
答案 2 :(得分:0)
您可以在函数之前和之后回显time()以计算处理