我收到此错误
致命错误:第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);
}
?>
答案 0 :(得分:0)
check-for-new-records.php的第一行设置了时间限制。
set_time_limit(2);
在大多数情况下,允许使用默认时间限制是一个不错的选择,很少需要手动更改该值。只有长时间运行的脚本才需要更改该值。
答案 1 :(得分:0)
您可以尝试使用set_time_limit()函数将执行时间强制大于2秒。
如果您在Xampp中使用多个PHP版本,请验证您是否在编辑正确的php.ini,因为这种类型的错误与配置有关。