我有一个数据库名称用户也有一个last_seen字段。我想用每5秒用当前时间戳更新这个字段。
答案 0 :(得分:1)
不要,只是不要。您可以使用任何Javascript框架通过定期XHR回调轻松完成此操作,但这意味着如果50个用户打开您的站点,您将每秒执行10个请求,并且您的托管服务商将关闭您产生荒谬的服务器负载。如果他们不这样做,您将因为SQL数据库锁定而使您的网站变得非常慢,或者甚至可能导致您的整个网站在每次请求时超时。
只需记录最后一次网页浏览,并更新其他回调中的时间戳(如果有)。如果用户正在查看的页面上没有任何其他回调,那么无论如何他都没有合理的目的知道他何时仍然打开它,因为他正在查看的信息无论如何都是庄严过时的。
答案 1 :(得分:0)
您可以每隔5秒进行一次AJAX调用,该用户处于活动状态。但是,它会为您的数据库和网络服务器增加大量流量。
如果它是一些内部应用程序,你知道负载它可能没问题。你还可以尝试将last_seen连接到某种缓冲区中的内存,如果60秒内没有更多的请求,那么它将被写入磁盘
答案 2 :(得分:0)
尝试mysql事件:
http://dev.mysql.com/doc/refman/5.1/en/create-event.html
CREATE EVENT myevent
ON SCHEDULE EVERY 5 SECOND
DO
UPDATE myschema.mytable SET mycol = mycol + 1;