На моей веб-странице есть сетки данных, которые необходимо обновлять каждые несколько минут.Данные запрашиваются из базы данных mysql с использованием PHP, когда истекает таймер Javascript.После того, как данные импортированы, их необходимо стилизовать, чтобы проблемы были легко видны, поэтому я запускаю другой таймер, который будет повторяться каждые 2,5 секунды в общей сложности три раза, а затем выключаться.Я пришел к такому решению, потому что таблицы данных не заполнялись сразу, поэтому запуск его после запросов без задержки приводил к тому, что он пропускал большую часть данных.
Проблемы: 1) Самая большая проблема, если веб-страницаостается открытым в браузере, когда компьютер переходит в спящий режим, есть несколько пустых оповещений.Учитывая, сколько людей будет использовать этот сайт на работе, такое поведение совершенно недопустимо.У меня нет идей.
2) Хотелось бы, чтобы был более эффективный способ обработки данных при импорте, чтобы мне не пришлось использовать $ ("td"). Each () всю страницу послеосвежитьсяЯ использую компоненты из библиотеки dhtmlx, поэтому немного сложно взломать функции и разобраться с этим внутри.Пост-обработка данных - это все, что я мог сделать, чтобы заставить ее работать, но я открыт для идей.
Объявления переменных и начальные настройки таймера:
//Set a timer to refresh all grid data every 4 minutes
var RefreshDataTimer = setInterval(timerMethod, 240000);
//Set an initial timer for the box coloring method
var RefreshBoxTimer = setInterval(boxMethod, 3000);
СеткаОбработчик таймера обновления данных:
//Every 2.5 minutes this function will reload all of the grid data.
//It also triggers the boxMethod function.
function timerMethod() {
$("#UpdateStatus_Div").fadeIn(300).delay(1000).fadeOut(300);
RunStatusGrid.clearAndLoad("data/RunStatus.php");
CmdlineGrid.clearAndLoad ("data/CmdlineDataGet.php");
Results0Grid.clearAndLoad ("data/Results0Data.php");
Results1Grid.clearAndLoad ("data/Results1Data.php");
Results2Grid.clearAndLoad ("data/Results2Data.php");
Results3Grid.clearAndLoad ("data/Results3Data.php");
RefreshBoxTimer = setInterval(boxMethod, 2500);
}
Обработчик таймера стилевого оформления данных:
//This function searches all of the grids for ERROR/FAIL/SKIP/WARN and changes
//the cell background colors to clearly show where there are issues.
//It will only run 3 times because it is CPU intensive. The 2.5 second delay is because
//the clearAndLoad functions are run as background tasks and don't complete immediately.
var BoxCounter = 0;
function boxMethod() {
BoxCounter++;
if(BoxCounter >= 4) {
BoxCounter = 0;
clearInterval(RefreshBoxTimer);
}
$("td").each(function(index) {
if( (this.innerHTML == "ERROR") || (this.innerHTML == "FAIL")) {
this.style.backgroundColor = "red";
this.style.fontWeight = "bold";
} else if ( (this.innerHTML == "SKIP") || (this.innerHTML == "WARN") ) {
this.style.backgroundColor = "yellow";
this.style.fontWeight = "bold";
}
} );
}
Любая помощь будет принята с благодарностью.