2011-11-18 90 views
1

我有一个用PHP和Javascript编码并使用MySQL的吼吼箱。 它的功能就像这样..我们有一个refresh.txt文件来检查新的留言,如果有新的留言呼叫数据库来获取新的留言。吼吼箱:计算用户活跃度的最佳方式

现在大家都知道shoutboxs的主要问题是CPU使用率。 所以我想知道是否有一种方法来计算活动用户,而不会在服务器上增加太多的额外压力。 也许通过Javascript?

不幸的是我没有任何源代码,因为它将是一个新功能。 任何帮助将是伟大的,谢谢。

回答

1

难道这些用户登录用PHP会议?如果是这样,在会话保存目录中只需count the number of active session files。这不是CPU密集型的,并且不涉及数据库调用。此外,如果您仍然在避免数据库调用,那么您可以使用私人文件跟踪不同的客户端(例如IP地址)以及他们最后一次从服务器请求资源的时间。有关此in this question的更多信息。但是,如果多个用户从同一网络(例如学校或企业)访问,则会出现逻辑错误,并且解决方案是使用Cookie或会话记录个别用户。

您可能也有兴趣long polling(Javascript)。它保持与服务器的连接打开,偶尔会检查是否有新数据。当计算没有,本身会话或cookie的活动用户数时,这可能很有用。

+0

是一个非常有趣的答案..我现在开始看这些选项..我没有会议目录我正在使用SMF的论坛..不是100%如何工作..我认为有会议存储在数据库中。理想的解决方案是能够获得在线用户的列表。 我想要这个todo的主要原因是因为这个论坛只存储了最近15分钟内在线的人。但是我知道有更多的在线内容。很高兴看到谁在线。 –

+1

根据我的经验,Simple Machine的在线用户(和客人)数量相当准确。如果你仍然想要你自己,我可以联系。对于家庭网站,我构建了一个从头开始(使用jQuery)的AJAX支持的Shoutbox功能。如果只有一个用户在线,它根本不会进行轮询,节省资源。在线的用户越多,轮询的次数就越多(绝不会比每10秒钟更频繁一次)。每次用户加载页面时,都会在数据库中更新其上一次活动时间。我发现这对小型项目是有效的。我也学到了很多东西。 – Matt

1

只需要一个活动计数器。只要指望在最后4分钟内活跃的任何人。然后使用JS从服务器每10秒钟请求一个数字。

否则,我宁愿只是使用第三方产品如http://www.shoutmix.com

+0

我也喜欢这个答案。每4分钟拨打一次电话,并将其显示在在线列表中。听起来可行并且不会那么紧张。我正在使用SMF,所以我可以让它使用SSI,然后调用who_is,然后将它们记录为在线..然后,我仍然需要JS中的统计计数器来显示在线吼吼箱中的实际号码。 –