0

我有一个数据库名称用户也有一个 last_seen 字段。我想用当前时间戳每 5 秒更新一次这个字段。

4

3 回答 3

1

不要,只是不要。您可以使用任何 Javascript 框架通过定期 XHR 回调轻松做到这一点,但这意味着如果 50 个用户打开您的网站,您将每秒执行 10 个请求,并且您的主机将关闭您产生荒谬的服务器负载。如果他们不这样做,您将使您的站点由于 SQL 数据库锁而变得异常缓慢,甚至可能导致您的整个站点在每次请求时都超时。

只需记录最后一次浏览量,并在其他回调中更新时间戳(如果有)。如果用户正在查看的页面上没有任何其他回调,则无论如何都没有合理的目的可以知道他何时仍然打开它,因为他正在查看的信息无论如何都已经过时了。

于 2013-08-28T11:28:56.000 回答
0

您可以每 5 秒进行一次 AJAX 调用,表明该用户处于活动状态。但是,它会为您的数据库和网络服务器增加大量流量。

如果它是一些内部应用程序并且您知道负载可能会很好。如果在 60 秒内没有更多请求,您也可以尝试将 last_seen 写入某种缓冲区中的内存,该缓冲区将写入磁盘

于 2013-08-28T11:27:36.063 回答
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;
于 2013-08-28T11:28:57.913 回答