gpt4 book ai didi

mysql - 自动删除表行

转载 作者:行者123 更新时间:2023-11-29 13:03:47 25 4
gpt4 key购买 nike

我是 MySQL 的新手,但是我需要 MySQL 才能工作,因为它将成为我的新 SANS(服务器地址名称系统)系统的中心。该系统的原因是为游戏服务器提供替代系统,因为某些游戏使用的默认 Gamespy 服务将于下月底关闭。

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

当然,这里的问题是游戏服务器很容易因为 1,000 多种原因之一而离线,我​​们并不希望客户端的游戏显示离线的游戏服务器,主要是因为:

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

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

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

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

我使用的是 Windows Server 2008 R2,带有最新的 MySQL 服务器和 Xampp。

最佳答案

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

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

如果这不能解决您的特定问题,请告诉我,我将研究对触发器进行编码。

关于mysql - 自动删除表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22996875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com