我有一个相当大的数据库,需要几个小时才能更新。现在我有一个只是加载的微调器,但用户不知道它有多远。我想知道如何制作进度条。问题是我不确定如何处理它。
我没有包含我在SQL中更新数据的方法,因为它非常标准。但我可以根据需要编辑帖子并添加它。但是,每次更新行时,我都会回显以下行$statement->rowCount() . " records UPDATED successfully";
这是我更新数据库的主要方法
function updateDatabase($test, $optionName, $value) {
set_time_limit(0);
global $DAO;
try {
foreach ($test as $post) {
$accesToken = "1581461310.56cbc4a.869be6649a604df4874513126692a3ec";
$updateMedia = 'https://api.instagram.com/v1/media/' . $post['insta_id'] . '?access_token=' . $accesToken;
$insta_stream2 = Connect::instaconn($updateMedia);
$obj = json_decode($insta_stream2, true);
if ($obj['meta']['code'] == 200) {
$DAO->updatePost($post['insta_id'], $obj);
}
}
$DAO->updateSettings($optionName, $value);
return "Database has been updated";
} catch (Exception $e) {
return "Database has NOT been updated. Error:" . $e;
}
}
我通过AJAX调用从index.html
更新我的数据库
$('#updateDatabase').click(function (e) {
var r = confirm("Warning: Updating the database can take a long time depending on the size. Do you want to update the database?");
if (r === true) {
e.preventDefault();
var ajaxurl = '../crawler/api_update_dump.php',
data = {'action': 'updateDatabase', 'optionName': 'last_update', 'value': currentDate};
$.get(ajaxurl, data, function (response) {
// Response div goes here.
obj = JSON.parse(response);
console.log("response", obj);
document.getElementById("lastUpdated").innerHTML = "<font color='white'>Last Updated: " + new Date().toJSON().slice(0, 10) + "</font>";
});
}
});
在我的php文件中,AJAX调用以下列方式接收
case 'getLastUpdate':
$lastUpdate = $DAO->getValueFromTable("value", "settings", "option_name", "last_update", "value");
echo json_encode($lastUpdate);
break;
任何人都有任何建议我应该如何为更新制作进度条?