[英]Ajax request max execution timing out
在使用此代碼通過Ajax XHTMLRequest收集數據時,我得到了PHP Max執行超時
if(isset($_GET['func']) and $_GET['func'] == 'feed') {
global $ado;
$old_msg_id = $_GET['old_msg_id'];
$result = $ado->exec("SELECT * FROM `earnings` ORDER BY `id` DESC LIMIT 1");
while($row = $ado->fetch_assoc($result)) {
$last_msg_id = $row['id'];
}
while($last_msg_id <= $old_msg_id) {
$result = $ado->exec("SELECT * FROM `earnings` ORDER BY `id` DESC LIMIT 1");
while($row = $ado->fetch_assoc($result)) {
$last_msg_id = $row['id'];
}
}
$response = array();
$response['msg'] = 'new';
$response['old_msg_id'] = $last_msg_id;
echo json_encode($response);
}
我在error_log中收到的錯誤是
PHP Fatal error: Maximum execution time of 30 seconds exceeded in /ajax.php on line 165
165行如下:
while($last_msg_id <= $old_msg_id) {
我目前看不到代碼有問題,關於什么地方有什么暗示?
在AJAX中,您可以按照以下方式發布超時時間,
jQuery.ajax({
url: 'ajaxhandler.php',
success: function (result) {
returned_value=result;
},
timeout: 10000,
async: false
});
如果您要獲取PHP,則可以在PHP.ini中進行更改
max_execution_time = 30 //make it like 300
否則,在您的PHP代碼中使用set_time_limit
調用時,set_time_limit()從零重新啟動超時計數器。 換句話說,如果超時是默認的30秒,並且在腳本執行后的25秒內執行了諸如set_time_limit(20)之類的調用,則該腳本將在超時之前運行總計45秒。
還要確保那些while循環永遠不會結束循環。
看來您的兩個while循環執行所需的時間太長,數據庫中是否分配了數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.