1

我刚刚创建了一个带有 php 会话的用户登录系统,现在用户可以注册并登录到站点并做其他事情......

现在我想创建 online.php 它将获取所有在线用户。我几乎在 google 和 stackoverflow 中搜索所有内容,但没有成功。

好的,现在我想描述我想以高性能创建的系统。当用户登录时,我们只需更新表userlastlogin这是一个时间戳,然后在 online.php 中我们选择 * 每个时间间隔 < 5 分钟的用户。为此,我可以lastlogin在用户加载每个页面时更新数据库中的这个时间戳字段,这需要很多 mysql 查询来完成这项工作......然后在每个页面加载中我必须更新

更新userlast=now()

这将花费我很多 mysql 查询。现在我正在寻找另一种方式,比如使用会话或我在这个链接中找到的东西

“通常的解决方案是在表中存储一个时间戳,每次用户执行某项操作时都会更新该时间戳。具有最近时间戳(例如五分钟)的用户显示为已登录,其他所有人都已注销。

它甚至不必在每次页面加载时都更新。在会话中保留最后一次更新时间的时间戳,并且仅在数据库标志即将到期时更新表。”

但不幸的是,答案并没有太大帮助,我需要一个示例或更多关于此的描述。

4

1 回答 1

1

1.)如果您需要更快的会话速度,例如memcache。一个简单的键值存储来保存您的会话或密钥。您可以将 Apache 配置为所有会话将自动存储在 memcache 中。

2.)另一种解决方案是制作一个MySQL 保存在 RAM 中的MEMORY 表。问题是当您重新启动服务器时,此表中的数据会丢失。但我认为在你上次登录的情况下没有问题。

3.) PHP 共享内存: http: //php.net/manual/de/ref.shmop.php用于小数据。

当您实施了解决方案时,我更喜欢MEMORY Table或 SHM 解决方案。

编辑:在 HDD 上搜索的最后一段与顶部的评论有关:Find Number of Open Sessions

于 2012-11-02T13:20:18.733 回答