Mysql 表行的自动删除

Mysql 表行的自动删除,mysql,sql,windows,Mysql,Sql,Windows,我是MySQL新手,但是我需要MySQL来工作,因为它将是我新的SAN(服务器地址名称系统)系统的中心。这个系统的目的是为游戏服务器提供一个替换系统,因为一些游戏使用的默认Gamespy服务将在下个月底关闭 SAN中MySQL的功能是存储活动游戏服务器的IP和端口(通过补丁向MySQL发送信息),然后让客户端(同样,通过补丁从MySQL检索信息)将服务器添加到游戏服务器列表中 当然,这里的问题是,游戏服务器很容易因为1000多个原因中的任何一个而脱机,我们并不希望客户端的游戏显示处于脱机状态的游

我是MySQL新手,但是我需要MySQL来工作,因为它将是我新的SAN(服务器地址名称系统)系统的中心。这个系统的目的是为游戏服务器提供一个替换系统,因为一些游戏使用的默认Gamespy服务将在下个月底关闭

SAN中MySQL的功能是存储活动游戏服务器的IP和端口(通过补丁向MySQL发送信息),然后让客户端(同样,通过补丁从MySQL检索信息)将服务器添加到游戏服务器列表中

当然,这里的问题是,游戏服务器很容易因为1000多个原因中的任何一个而脱机,我们并不希望客户端的游戏显示处于脱机状态的游戏服务器,主要原因是:

  • 如果我们需要阻止任何假冒的游戏服务器,这些假冒的游戏服务器仍将在服务器列表中(以及MySQL数据库中)
  • 它会很快阻塞服务器列表
  • 临时服务器(如home、development和test Server)仍将在列表中
  • 如果服务器的IP和/或端口因任何原因发生更改(例如,服务器IP是动态的),则列表中会有重复的服务器,客户端可能不知道选择哪个服务器
我想到了几个解决方案,包括让客户端依次ping每个游戏服务器,检查它是否在线,但这并不理想,原因有两个:

  • 服务器计算机管理员可能关闭了WAN ping,这意味着尽管我们的游戏服务器可能在线,但它不会显示在列表中
  • 对于管理服务器计算机所在网络的各种服务器管理员来说,客户端的ping可能被视为可疑行为,这意味着客户端可能因此而被阻止
我想到了一个简单的解决方案:让MySQL(或phpMyAdmin)在添加表行10秒后删除它。 这种行为可能吗


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

我认为您可以使用MySQL触发器来实现这一点(我不确定10秒的延迟),但我相信有更好的解决方案:

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


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

为了澄清,如果服务器不每10秒报告一次,它将从列表中消失?@MarcusAdams这正是我需要它做的。我们无法在10秒后清除整个表,因为这会导致一些客户端崩溃(在读取过程中删除表项等)。游戏服务器将使用什么传输机制通知中央服务器它们仍然活着?@LarryLustig我是MySQL新手,如果这是一个非常简单的问题,我很抱歉。什么是传输机制?游戏服务器将如何与您联系?它们是否与您的中央服务器位于同一网络上?你打算把你的MySQL服务器开放到整个互联网上直接发布记录吗?