我有一个正在运行的django / apache2 memcached应用程序(ubuntu),并希望跟踪登录的在线用户.
追踪这个的最佳方法是什么?
每次登录用户加载页面时,我宁愿不写入数据库;但还有其他选择吗?
最佳答案
一种方法可能是:
您创建了一个在process_response上执行以下操作的中间件:
>检查名为“在线”的cookie,但仅限用户进行身份验证
>如果没有饼干,
>设置一个名为’online’的cookie,其值为’1′
>将cookie的生命周期设置为10分钟
>使用当前日期时间更新此用户的auth.User的“last_login”字段
现在,您已在auth.User表中拥有所有当前登录的用户. last_login比datetime.now() – interval(15分钟)更新的所有用户可能被视为“在线”.
将每隔10分钟为每个登录用户编写数据库.根据需要调整值“10”和“15”.
这里的优点是数据库写入很少(根据您的两个数字设置10/15).对于速度优化,请确保last_login已编入索引,因此包含Count的此字段的过滤器非常快.
希望这可以帮助.
相关文章