Если не нужна подробная статистика каждой сессии, а нужна статистика лишь по дням, то не проще ли по дням эту статистику и вести?
Как я отвечал на другом форуме, можно создать таблицу, по типу:
PHP код:
id | account_id | date | online_uptime
Далее при авторизации записывать текущее значение gettime() в переменную игрока, а после, например, раз в 10 минут + при выходе делать запрос в базу на поиск записи статистики игрока с текущей датой
PHP код:
SELECT id FROM table WHERE account_id = %d AND date = CURDATE() LIMIT 1
Если строка найдена - обновляем данные:
PHP код:
UPDATE table SET online_uptime = online_uptime+/*gettime()-время_из_переменной*/ WHERE id = /*возвращённый_ID*/
//И обнуляем время переменной/перезаписываем текущим gettime(), дабы начать новый "отсчёт"
Ну а если не найдена, то просто создаём новую запись
(и если это случилось в момент обновления по таймеру, а не при выходе, то можно записать ID создавшейся строки, дабы в следующий раз не делать SELECT-запрос, а напрямую обновить строку):
PHP код:
INSERT INTO table SET account_id = %d, online_uptime=/*gettime()-время_из_переменной*/, date = CURDATE()
Теперь чтоб посмотреть записи за последнюю неделю, достаточно сделать такое условие выборки:
PHP код:
SELECT * FROM table WHERE date >= DATE_SUB(CURDATE(), INTERVAL 7 day)