2012-01-24 2 views
0

Я пытаюсь сделать некоторые основные оценки того, как долго пользователи тратят на сайт. У меня есть простой скрипт опроса в javascript, который слышит скрипт php. Я пытаюсь сделать следующее в одном SQL заявление:Попытка рассчитать разницу между отметкой времени и последнего времени и временной отметкой времени

  • вычислить разницу между сейчас и поле последним updated_on (который представляет собой поле даты и времени) и добавить его к текущему полю active_time (это просто целое число)
  • Затем обновите updated_on, чтобы отразить, что запись была обновлена ​​

Это SQL Я пытаюсь использовать;

UPDATE login_log 
SET active_time = active_time + (SELECT TIME_TO_SEC(TIMEDIFF(NOW(), updated_on))), 
updated_on = NOW() 
WHERE user_id = ? && session_id = ? AND status = 'active' 

Вопрос 1 - Я предполагаю, что я могу обновить updated_on и до сих пор используют его известково разницу и не имеют условия гонки, но кто-то может подтвердить или сказать мне, что не работает?

Вопрос 2 - Я должен делать что-то еще дурацкое, потому что после abit, active_time уходит, как в нем думает, что это длится часами, когда это всего лишь 20 минут. Не совсем рамки этого quesiton, но если кто-нибудь увидит что-нибудь быстро, что это не так, я бы знать ....

ТИА

ответ

0

Это похоже на неправильный путь, чтобы идти об этом. Я бы упростил это, имея два поля: created и updated_on, которые я бы назвал last_updated. Чтобы рассчитать текущее время на сайте, вы просто вычтите созданное значение из текущего времени. Предположительно, вам нужна также постоянная запись. Это происходит из поля last_updated, которое обновляется каждый раз, когда отображается запрос от пользователя (включая ваше сердцебиение). Вы просто обновляете его с текущим временем. Разница между created и last_updated становится вашей постоянной записью времени на месте.