php阻止最大执行时间//获取适当的响应而不是错误
首先我想指出,这与其他问题不同,因为我不想增加最大执行时间 但我的问题是: 我有一个很长的轮询,所以一个超时高于PHP最大执行时间的AJAX-POST,所以我不必担心这个值。我现在意识到,如果我在电脑上打开浏览器并运行xampp,帖子就不会像重新加载页面那样被打断。当我回到电脑窗口时,它进入睡眠模式,脚本不会随着我的计时器停止…:php阻止最大执行时间//获取适当的响应而不是错误,php,ajax,comet,execution-time,Php,Ajax,Comet,Execution Time,首先我想指出,这与其他问题不同,因为我不想增加最大执行时间 但我的问题是: 我有一个很长的轮询,所以一个超时高于PHP最大执行时间的AJAX-POST,所以我不必担心这个值。我现在意识到,如果我在电脑上打开浏览器并运行xampp,帖子就不会像重新加载页面那样被打断。当我回到电脑窗口时,它进入睡眠模式,脚本不会随着我的计时器停止…: $loop = array( "count" => 0, "sleeptime" => 2, "maxec" =&
$loop = array(
"count" => 0,
"sleeptime" => 2,
"maxec" => 30,
"start" => time(),
);
$change = false;
while ($change) {
$loop["count"]++;
$looptime = ((time() - $loop["start"]) / $loop["count"]);
if ($looptime * ($loop["count"] + 1) >= $loop["maxec"] - $looptime) {
$response["s"] = 1; // $response is an array which will be printed at the end / JSON format
$change = true;
} else {
sleep($loop["sleeptime"]);
}
// check my database
// if there is an update, set $change = true and print the update
}
。。。但是给了我一个标准的错误信息:
Fatal error: Maximum execution time of 30 seconds exceeded in *file*.php on line 20
我的计时器在其他情况下都能工作…*到目前为止,我能说的每一句话
因此,我正在寻找一种更好的方法来打印我的响应,例如{response:1},而不是错误消息。因此,我需要一个更好的工作计时器或一个完整的其他解决方案
我通过谷歌找到了这个:
但我无法想象这会如何帮助我在发生致命错误之前取得成功。这到底是如何工作的?执行关机代码意味着运行更多的代码,这意味着您正在运行执行时钟,但您已经超过了限制。换句话说,你在试图绕过这个限制,或者用人的话来说,让我在你上班已经迟到的时候再睡5分钟。我说了,但我无法想象这怎么能帮助我“提前”犯下致命错误。因为我知道我不能这么做。但我不知道为什么我的计时器在这种情况下不工作。这也会帮助我,如果你可以说,这是没有机会得到一个真正的服务器上。。。我想我的情况不具有代表性,我认为PHP中没有任何东西可以让您获得当前使用的执行时间计数器。也许我错了,但无论如何,这是一个致命的错误。你无法捕获错误,即使你可以检查计时器,也无法阻止它在运行oops时达到最大值,反正我的代码几乎达到极限。我可以将此消息更改为我的文本,以便只更改错误的“格式”吗?不需要修改php源代码。无法从前端代码控制这些错误。