我目前有一个运行基本用户系统的Pylons应用程序。我想尝试创建一个小部件,显示当前登录到网站的用户。我不知道如何处理这个问题;我不确定是否活跃的pylons会话是基于用户是否实际上在Web应用程序页面上,所以我正在寻找一些关于如何使用我已经可能完成此任务的想法。
答案 0 :(得分:11)
根据你想要的准确程度,有几种方法可以做到。
最简单,第一种方法,使用memecached或持久存储来跟踪用户,以及他们上次访问页面的时间。考虑在X分钟内点击页面的任何人“登录”,只要他们没有“退出”。如果您只是每次点击更新数据库,或者更新memcached(或更快的数据库),那么在最后一分钟内查询会话。
其次,但是在您的服务器上更加密集,在每个页面上放置Javascript,每隔XX秒/分钟点击您网站上的特殊URL以指示用户已登录。记录并使用该计数。这样做的好处是,您的JS可以使页面上的计数器实时更新。虽然您的服务器上的轮询可能很昂贵。
或者第三,使用Comet风格的系统,比如Orbited,只要用户在连接到服务器的页面上,连接就会打开,你可以跟踪你有多少个开放的会话。 Orbited每个服务器一次可以处理大约10k个开放连接。我相信。
我建议使用第一种类型,因为它需要最少的额外开销/设置并处理相当常见的情况。如果你正在使用实时聊天,你需要更多的准确性考虑另外两个中的一个。