当用户不再在线时更新数据库
Update database when user is no more online
我目前正在开发 Javascript 多人游戏。
当用户想玩时,他们进入等候室等待玩家一起玩。
它以这种方式存储在 SQL 数据库中:
我有一个名为 USER
的 table 和一些关于玩家的数据,另一个名为 WAITINGROOM
的 table 与等待游戏的用户的 ID USERID
相关联与其他信息。
当玩家离开等候室或关闭浏览器时,我会删除 table WAITINGROOM
中带有他们 id 的行。
但我们假设用户在寻找游戏时失去了互联网连接。我怎么知道他离线了,所以我可以删除包含他的 ID 的行?
播放器不在线所以这肯定不是客户端我可以处理的。
也许 PHP 中的服务器端?或者直接在数据库中使用超时之类的...
我假设您有一个脚本(可能通过 ajax 调用)为当前用户获取在线用户。只需添加一个带有时间戳的列,如 'last_seen_online'。每次用户调用此脚本时更新该字段。现在您可以在 sql 中过滤它,例如获取最后一分钟在线的所有用户。 - 一分钟后未激活的所有内容都被视为离线。
要摆脱掉线的用户,您可以实施垃圾收集(就像 php 和会话一样)。您抓住了自最近(例如)5 分钟以来未见过的所有用户。您将此垃圾收集放在同一个脚本中。保持低负载。您不会每次都调用它,就像 50% 的时间使用 if(rand(1,100) > 50)
或您喜欢的任何百分比。
我目前正在开发 Javascript 多人游戏。
当用户想玩时,他们进入等候室等待玩家一起玩。
它以这种方式存储在 SQL 数据库中:
我有一个名为 USER
的 table 和一些关于玩家的数据,另一个名为 WAITINGROOM
的 table 与等待游戏的用户的 ID USERID
相关联与其他信息。
当玩家离开等候室或关闭浏览器时,我会删除 table WAITINGROOM
中带有他们 id 的行。
但我们假设用户在寻找游戏时失去了互联网连接。我怎么知道他离线了,所以我可以删除包含他的 ID 的行?
播放器不在线所以这肯定不是客户端我可以处理的。 也许 PHP 中的服务器端?或者直接在数据库中使用超时之类的...
我假设您有一个脚本(可能通过 ajax 调用)为当前用户获取在线用户。只需添加一个带有时间戳的列,如 'last_seen_online'。每次用户调用此脚本时更新该字段。现在您可以在 sql 中过滤它,例如获取最后一分钟在线的所有用户。 - 一分钟后未激活的所有内容都被视为离线。
要摆脱掉线的用户,您可以实施垃圾收集(就像 php 和会话一样)。您抓住了自最近(例如)5 分钟以来未见过的所有用户。您将此垃圾收集放在同一个脚本中。保持低负载。您不会每次都调用它,就像 50% 的时间使用 if(rand(1,100) > 50)
或您喜欢的任何百分比。