Ключевые моменты:
Фронтенд: Приложение использует PHP для логики на стороне сервера и включает сценарий таймера JavaScript для отображения и обновления прошедшего времени (формат ЧЧ:ММ:СС).
Бэкэнд: я реализовал функцию AJAX для отправки данных прошедшего времени в updateElapsedTime. .php для хранения в MySQL.
Проблема: несмотря на работу таймера в фоновом режиме, данные в базе данных не обновляются последовательно, особенно после длительных периодов бездействия.
Настройка:
Среда : Размещено на InfinityFree.
Обработка сеансов: сеансы PHP управляются для аутентификации пользователей (session_start()).
Настройка AJAX: использует API fetch() в JavaScript для отправки данных JSON на серверную часть.
JAX-код:
Код: Выделить всё
function updateElapsedTime() {
let timerValue = document.getElementById('display').innerText;
let startTime = getCookie('startTime');
let logoutTime = new Date().toISOString().split('T')[1]; // Current time in ISO format
fetch('updateElapsedTime.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
elapsedTime: timerValue,
startTime: startTime,
logoutTime: logoutTime
})
})
.then(response => response.json())
.then(data => {
console.log('ElapsedTime updated in database:', data);
})
.catch(error => console.error('Error updating elapsedTime:', error));
}
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/78668919/timer-continues-in-background-but-does-not-update-backend-data-php-session-and[/url]