0

I have some code that I know will reach max timeout at some point.

I tried using try-catch to handle this error, but I have just been informed timeouts can't be caught this way.

Is there a way I can catch the error, or count processing time and handle the error just before it reaches timeout?

4

3 回答 3

1

最大执行时间是 PHP 错误而不是 PHP 异常,因此您的错误处理代码将无法捕获实际不存在的异常。执行时间限制实际上是 PHP 服务器杀死一个基本上失控的函数的最后手段。

您确实需要研究为什么您的数据库代码需要 30~ 秒才能执行并解决代码/数据库问题。另一个(不推荐)选项是将 PHP 中的最大执行时间增加到适合您的代码的时间。

于 2013-07-05T18:30:36.907 回答
1

正如 正确提到的iTom,首先您需要弄清楚为什么您的代码需要 30 秒。

如果这是预期的,并且您正在对数据库更新进行某种操作,那么在 drupal 中,我们可以处理此问题。您需要使用Drupal 批处理 API

在此处查看更多详细信息:https ://api.drupal.org/api/drupal/includes!form.inc/group/batch/7

允许表单处理分布在多个页面请求上的函数,从而确保处理不会因为 PHP 超时而中断,同时允许用户接收有关正在进行的操作进度的反馈。

于 2013-07-07T01:00:32.073 回答
0

您可以在函数之前和之后回显 time() 以计算处理

于 2013-07-06T03:08:10.310 回答