当系统前台无法提供参数时,仍然可以通过以下几种方式记录会话结束时间:
基于最后活动时间:
使用会话管理中间件:
心跳检测机制:
// 前端定期发送心跳请求
setInterval(() => {
fetch('/api/heartbeat');
}, 5 * 60 * 1000); // 每5分钟一次
页面可见性API:
document.addEventListener('visibilitychange', () => {
if (document.hidden) {
// 页面不可见时发送请求
fetch('/api/session/visibility', { method: 'POST' });
}
});
分析访问日志:
使用应用性能监控(APM)工具:
CREATE TABLE user_sessions (
session_id VARCHAR(255) PRIMARY KEY,
user_id INT,
start_time TIMESTAMP,
last_activity TIMESTAMP,
end_time TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
需要更具体的实现方案或针对特定技术栈的建议,请提供更多系统架构细节。