我想创建一个每小时运行一次的活动时间表,并检查所有过期玩家的游戏。过期的播放器是一个播放器,其相应的时间戳比服务器当前时间早24小时 如果时间戳超过我想要的24小时,则从Avtv_Plrs字段开始,并且对相应的Plr_#字段进行BLANK,并对TS_#字段进行BLANK。
结果(如果超过24小时)看起来像这样。
我之前从未使用过活动时间表,我们将不胜感激。 我也不想使用Conjob,谢谢你。
答案 0 :(得分:0)
花了我一些时间,但我明白了。 加入游戏后,时间戳为当前时间+ 86400秒。给我一个当前时间+ 24小时的时间戳。如果时间戳小于UNIX_TIMESTAMP() 然后更新数据。 我必须为每个玩家制作一个事件,所以第一个看起来像这样:
CREATE DEFINER=`root`@`localhost`
EVENT `Game_Update_001`
ON SCHEDULE
EVERY 1 HOUR
STARTS '2018-02-28 01:20:00'
ON COMPLETION PRESERVE ENABLE
DO
UPDATE `games`
SET Plr_1 = '',
Ts_1 = '',
Activ_Plrs = Activ_Plrs - 1
WHERE Ts_1 < UNIX_TIMESTAMP()
AND Ts_1<>''
第二个看起来像这样:
CREATE DEFINER=`root`@`localhost`
EVENT `Game_Update_002`
ON SCHEDULE
EVERY 1 HOUR
STARTS '2018-02-28 01:20:00'
ON COMPLETION PRESERVE ENABLE
DO
UPDATE `games`
SET Plr_2 = '',
Ts_2 = '',
Activ_Plrs = Activ_Plrs - 1
WHERE Ts_2 < UNIX_TIMESTAMP()
AND Ts_2<>''
等等。由于某种原因,每个事件必须一次通过SQL输入。