2012-01-24 23 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,仍然用它来calc下的差异,没有竞争条件,但有人可以证实或告诉我不工作?

问题2 - 我必须做一些其他的事情,因为在高举之后,active_time就像是在想它已经持续了几个小时,只有20分钟。这quesiton没有真正的范围,但如果有人很快看到任何东西是错的,我会很感激知道....

TIA

回答

0

这似乎是错误的方式去了解这一点。我会简化它有两个字段,createdupdated_on,我将其称为last_updated。要计算网站上的当前时间,您只需从当前时间中减去创建的值。据推测,你也需要一些永久记录。这来自last_updated字段,每次看到用户的请求(包括您的心跳)时都会更新该字段。您只需使用当前时间更新它。 createdlast_updated之间的差异成为您现场记录的永久记录。