我正在尝试对用户在网站上花费的时间进行一些基本估算。我在javascript中有一个简单的轮询脚本,可以听到php脚本。我试图在一个sql语句中执行以下操作:
这是我正在尝试使用的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分钟。这个问题不是真正的范围,但如果有人发现任何错误,我会很高兴知道......
TIA
答案 0 :(得分:0)
这似乎是错误的做法。我会简化它有两个字段,created
和updated_on
,我称之为last_updated
。要计算站点上的当前时间,您只需从当前时间中减去创建的值。据推测,你也想要一些永久记录。它来自last_updated
字段,每次看到用户的请求(包括您的心跳)时都会更新。您只需使用当前时间更新它。 created
和last_updated
之间的差异将成为您在网站上的永久记录。