0

当用户失去连接或从我的网站注销时,我想将 mysql 表字段值更新为“离线”。是否可以?如果是,那么如何?

4

3 回答 3

3

不,这是不可能的。

而不是使用字段并将其设置为online并且offline您应该将其设置为INT字段。每次用户与您的网站交互时,只需使用当前时间戳 ( $_SERVER['REQUEST_TIME']) 更新该字段。使用该字段,您可以通过查看用户活动后的时间来推断用户的状态(例如,<=30 分钟在线,>30 分钟离线)。

于 2012-12-28T06:49:00.067 回答
1

首先,使用 PHP 会话,为每个访问者分配一个唯一的随机 ID。然后创建一个包含此 ID 的数据库行,该 ID 的创建时间和最后一次在线看到的时间。

然后,每隔 60 秒左右,使用 jQuery 的 .load() 从服务器加载一个 PHP 脚本,该脚本只更新 mysql 数据库中的 last_seen 字段。任务完成。

为了避免溢出,做一个 cronjob,或者使用随机,每 X 个请求或分钟清理一次数据库。

于 2012-12-28T06:47:12.307 回答
1

在这里使用 PHP Session 会有所帮助。每当用户登录时,更新数据库字段中 PHP 的session_id(),众所周知,PHP将会话数据存储在tmp文件夹中。您可以使用 cron 作业扫描此文件夹以获取活动会话。通常会话文件看起来像 sess_session_id()。

算法如下

  1. 用户登录
  2. 更新数据库中的会话值
  3. 将登录状态更新为在线

每 1 分钟运行一次 cron 作业,编写 CLI 程序,这样您就不需要发出不必要的 HTTP 请求。此 CLI 程序将扫描包含会话 ID 的表,您需要在tmp文件夹中搜索相同的(以 sess_ 为前缀的会话 ID) 。如果文件存在则表示用户在线,如果文件不存在则表示用户离线。

我希望这有帮助。

于 2012-12-28T07:49:45.267 回答