表行的自动删除

时间:2014-04-10 19:06:38

标签: mysql sql windows

我是 new 到MySQL,但是我需要MySQL才能工作,因为它将成为我新的SANS(服务器地址名称系统)系统的核心。这个系统的原因是为游戏服务器提供了一个替换系统,因为一些游戏使用的默认Gamespy服务将在下个月底关闭。

MySQL在SANS中的功能是存储活动游戏服务器的IP和端口(被修补以向MySQL发送信息),然后使客户端(再次,修补以从MySQL检索信息)添加服务器到他们的游戏内服务器列表。

原因在于,游戏服务商可以轻松地在1000多个原因中脱机,我们并不希望客户端的游戏显示离线游戏服务器,主要是因为:

  • 如果我们需要阻止任何虚假游戏服务器,这些虚假游戏服务器仍然会在服务器列表中(以及MySQL数据库)
  • 它会很快堵塞服务器列表
  • 家庭,开发和测试服务器等临时服务器仍将在列表中
  • 如果服务器的IP和/或端口因任何原因发生更改(例如服务器IP是动态的),列表中将出现重复的服务器,客户端可能不知道要选择哪个服务器。

我想到了几个解决方案,包括让客户端依次ping每个游戏服务器以检查它是否在线,但由于以下几个原因,这并不理想:

  • 服务器计算机的管理员可能已关闭WAN ping,这意味着虽然我们的游戏服务器可能在线,但它不会显示在列表中
  • 对于管理服务器计算机所在网络的各个服务器管理员来说,客户端的ping可能被视为可疑行为,这意味着客户端可能因此而被阻止。

我想到了一个简单的解决方案:让MySQL(或phpMyAdmin)在添加后10秒内删除每个表行。 这种行为甚至可能吗?

我在Windows Server 2008 R2上,使用最新的MySQL服务器和Xampp。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用MySQL触发器来完成此操作(我不确定10秒延迟),但我相信有更好的解决方案:

您可以将一个名为Status的列添加到存储游戏服务器信息的表中。 然后你可以使用标志来区分游戏服务器的类型:假,测试,活动,非活动等。 接下来,您将过滤用户看到的仅显示活动游戏服务器的内容。 如果服务器没有每10秒报告一次,则该标志只是标记为非活动状态。 最后,您可以安排一项工作每天运行一次,以清理超过24小时的记录。

如果这对您的特定问题不起作用,请告诉我,我会研究触发器的编码。

相关问题