如何捕获致命错误:PHP 中超过 30 秒的最长执行时间
2022-08-30 08:38:00
我一直在玩我正在开发的系统,并设法让它导致这种情况:
致命错误: 超出 30 秒的最长执行时间
当我做一些不切实际的事情时,它发生了,但它仍然可能发生在用户身上。
有谁知道是否有办法抓住这个异常?我已经阅读了,但每个人似乎都建议增加允许的时间。
我一直在玩我正在开发的系统,并设法让它导致这种情况:
致命错误: 超出 30 秒的最长执行时间
当我做一些不切实际的事情时,它发生了,但它仍然可能发生在用户身上。
有谁知道是否有办法抓住这个异常?我已经阅读了,但每个人似乎都建议增加允许的时间。
尝试作为PHP文档怎么样(好吧...至少有一位读者)说:
<?php
function shutdown()
{
$a = error_get_last();
if ($a == null) {echo "No errors";}
else {print_r($a);}
}
register_shutdown_function('shutdown');
ini_set('max_execution_time', 1);
sleep(3);
?>
请查看以下链接:
您唯一的选择是增加脚本的允许执行时间(将其设置为0可使其无限,但不建议这样做)或生成一个新线程并希望获得最佳效果。
这不可捕获的原因是它并没有真正被抛出。实际上没有一行代码触发了错误,而是PHP说,“不,对不起,这太长了。现在是时候关门了。这是有道理的。想象一下,一个最大执行时间为30秒的脚本捕获该错误并再花费30秒...在一个设计拙劣的程序中,这开辟了一些相当讨厌的机会来利用。至少,它将为DOS攻击创造机会。