致命错误:等中超过2秒的最大执行时间

时间:2019-01-03 00:16:39

标签: php

我收到此错误

致命错误:第14行的C:\ xampp \ htdocs \ path \ check-for-new-records.php中超过2秒的最大执行时间

,我在Google上查找了此错误,但Google上的任何文章或帖子都没有帮助我。我不认为这是我的php.ini文件,因为我查看了文件中说max_execution_time = 30并且 基本上我是

进行长时间轮询,每两秒钟显示一次错误,那么如何防止该错误代码出现?

这是我的代码

索引

<?php

$db_servername_onPageLoad= 'localhost';
$db_username_onPageLoad= 'jd';
$db_password_onPageLoad= '1234';
$db_name_onPageLoad= 'test';

$db_connect_onPageLoad= new mysqli($db_servername_onPageLoad,$db_username_onPageLoad,
$db_password_onPageLoad,$db_name_onPageLoad);

$db_query_onPageLoad= "SELECT COUNT(id) AS id FROM example";

$db_result_onPageLoad= $db_connect_onPageLoad->query($db_query_onPageLoad);
$db_row_onPageLoad= $db_result_onPageLoad->fetch_object();

$total_records_onPageLoad=$db_row_onPageLoad->id;

?>

<style>
#label{
    margin: 0;
    color: red;
    font-weight: bold;
  }


#last_count{
margin-top: 0;
}

</style>

<script>

document.addEventListener('DOMContentLoaded',function(){

/**********************************************************************
Check for a new record amount in the data base
**********************************************************************/    

//Client side structure of long-polling

function checkForNewRecords() {

var formData= new FormData();

var last_count= document.querySelector('#last_count').innerHTML;


formData.append('last_count',last_count);

var xhr= new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
document.querySelector('#output').innerHTML= xhr.responseText;

/*<Allow JS on the requested page>*/

//Target the AJAX response div to allow JS to run in that div
var output= document.querySelector('#output');
//

var exJs= output.getElementsByTagName('script');
var enableAll = exJs.length;
for(var i=0; i < enableAll; i++){
eval(exJs[i].text);
}

/*</Allow JS on the requested page>*/

checkForNewRecords();

}
}



xhr.open('POST','check-for-new-records.php','true'); /*<--Having xhr.open() in this function allows continuous ajax requests by constant button presses without any errors*/
xhr.send(formData);

}

checkForNewRecords();

});

</script>

<div id='output'></div>

<p id='label'>Total records in the database in real time by long polling</p>

<p id='last_count'><?php echo $total_records_onPageLoad; ?></p>

check-for-new-records.php

<?php

    set_time_limit(2);

    $db_servername= 'localhost';
    $db_username='jd';
    $db_password= '1234';
    $db_name= 'test';

    $last_count = (int)$_POST['last_count'];    // get last number of records

    $db_connect= new mysqli($db_servername,$db_username,$db_password,$db_name);

    while (true) {

    $db_query= "SELECT COUNT(id) AS id FROM example";

    $db_result= $db_connect->query($db_query);
    $db_row= $db_result->fetch_object();

    $total_records= $db_row->id;


    if ($total_records > $last_count) {

    ?>
    <script>
    document.querySelector('#last_count').innerHTML= '<?php echo $total_records; ?>';
    </script>
    <?php

    break;
    }

    sleep(2);

    } 
    ?>

2 个答案:

答案 0 :(得分:0)

check-for-new-records.php的第一行设置了时间限制。

set_time_limit(2);

在大多数情况下,允许使用默认时间限制是一个不错的选择,很少需要手动更改该值。只有长时间运行的脚本才需要更改该值。

有关更多信息:http://php.net/manual/en/function.set-time-limit.php

答案 1 :(得分:0)

您可以尝试使用set_time_limit()函数将执行时间强制大于2秒。

如果您在Xampp中使用多个PHP版本,请验证您是否在编辑正确的php.ini,因为这种类型的错误与配置有关。