2013-08-28 22 views

回答

1

不要,只是不要。您可以使用任何Javascript框架定期进行XHR回调,但这意味着如果有50个用户打开了您的站点,则您将每秒执行10个请求,并且您的主机将关闭您产生荒谬的服务器负载。如果他们不这样做,你会因为SQL数据库锁定而让你的网站变得很慢,甚至可能导致你的整个网站在每个请求中超时。

只记录最后的综合浏览量,并更新其他回调中的时间戳(如果有的话)。如果用户正在查看的页面上没有任何其他回调,那么无论如何他都没有合理的目的来知道他何时仍然打开它,因为他所查看的信息无论如何都是庄严的过时的。

+0

那我该怎么办? – sanu

+0

就像我说过的,你可以在http://stackoverflow.com/questions/5052543/how-to-fire-ajax-request-periodically中解释它。我只是说你**从来没有,甚至**应该考虑**在现场做这个事情,除非你有像Facebook和谷歌这样的整个数据中心。 –

0

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

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

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; 
+3

MySQL究竟应该如何知道用户仍在观看有问题的页面? –

+0

“我如何使用当前时间戳每5秒更新我的数据库” 这是他的问题,我想这取决于他的逻辑如何知道用户是否仍在观看,但他要求的是更新数据库每5秒钟一次。 – trrrrrrm

+0

从技术上讲,这确实回答了这个问题,但我认为_implication_是仅当用户仍然在页面':)'上才会发生更新。 – halfer