Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php阻止最大执行时间//获取适当的响应而不是错误_Php_Ajax_Comet_Execution Time - Fatal编程技术网

php阻止最大执行时间//获取适当的响应而不是错误

php阻止最大执行时间//获取适当的响应而不是错误,php,ajax,comet,execution-time,Php,Ajax,Comet,Execution Time,首先我想指出,这与其他问题不同,因为我不想增加最大执行时间 但我的问题是: 我有一个很长的轮询,所以一个超时高于PHP最大执行时间的AJAX-POST,所以我不必担心这个值。我现在意识到,如果我在电脑上打开浏览器并运行xampp,帖子就不会像重新加载页面那样被打断。当我回到电脑窗口时,它进入睡眠模式,脚本不会随着我的计时器停止…: $loop = array( "count" => 0, "sleeptime" => 2, "maxec" =&

首先我想指出,这与其他问题不同,因为我不想增加最大执行时间

但我的问题是: 我有一个很长的轮询,所以一个超时高于PHP最大执行时间的AJAX-POST,所以我不必担心这个值。我现在意识到,如果我在电脑上打开浏览器并运行xampp,帖子就不会像重新加载页面那样被打断。当我回到电脑窗口时,它进入睡眠模式,脚本不会随着我的计时器停止…:

$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源代码。无法从前端代码控制这些错误。