一尘不染

如何捕获致命错误:PHP的最大执行时间超过30秒

php

我一直在玩我正在开发的系统,并设法使它引起以下问题:

致命错误:超过30秒的最大执行时间

发生在我做一些不切实际的事情时,但是它可能发生在用户身上。

有人知道是否有办法捕获此异常吗?我读过一些,但似乎每个人都建议增加允许的时间。


阅读 307

收藏
2020-05-26

共1个答案

一尘不染

您唯一的选择是增加脚本的允许执行时间(将其设置为0会使它无限执行,但是不建议这样做),或者生成一个新线程并希望达到最佳效果。

之所以无法捕获,是因为它并没有真正抛出。没有一行代码实际触发该错误,PHP则说:“不,对不起,这太长了。该关闭了。”
这是有道理的。想象一下,如果一个脚本的执行时间最长为30秒,那么在捕获一个错误的情况下又需要花费30秒钟的时间…在一个设计不佳的程序中,这会带来一些相当可恶的利用机会。至少,它将为DOS攻击创造机会。

2020-05-26