Timer:add 多个页面刷新倒计时时间会混乱

DaXin

多个页面刷新倒计时时间会混乱,有没有遇到的怎么解决

2577 15 0
15个回答

喵了个咪

这个属于业务逻辑问题吧

  • 暂无评论
DaXin

@喵了个咪 ???,您有没有用过Timer啊!没遇到过这样问题

  • 暂无评论
喵了个咪

用过啊。

  • 暂无评论
喵了个咪

你这描述太精简了,别人都不知道你具体什么问题

  • 暂无评论
six

如果你这个定时器同时运行多个,并且$last_time是不同的值,那输出的end_time肯定是乱的啊。如果是这样的话这个业务逻辑确实有点问题。

  • 暂无评论
DaXin

@喵了个咪 一个页面小游戏,页面有倒计时功能,倒计时归0游戏结束,一个页面单独打开这个小游戏,无论页面怎么刷新都没事,多个页面打开同一个小游戏,比如有A,B,C三个页面同时进行这个小游戏,在倒计时的过程中,无论刷新A页面,B页面,还是C页面,其他两个页面的倒计时就会停止,当前刷新的这个页面倒计时时间出现混乱也不是当前刷新页面的倒计时,变成B页面或者C页面的倒计时。我看了下是Timer:add的问题,没找到解决方案

  • 暂无评论
DaXin

@six 这个$last_time每个页面倒计时的时间是不一样的,这个小游戏每个运行时间是不一样的

  • 暂无评论
喵了个咪

大概知道现象了。
刷新页面会触发什么逻辑呢,一般来说一个页面刷新不会影响其它页面接收数据,其它页面倒计时不会停止才对。是不是onClose里做了什么特殊操作。

  • 暂无评论
DaXin

@喵了个咪 onClose没有做任何操作

  • 暂无评论
DaXin

@喵了个咪

  • 暂无评论
喵了个咪

我知道了,你定时器里共用了self::$acid这个全局变量,假设A页面self::$acid=A,这时候B页面进入游戏,B页面的self::$acid=B,那么会出现self::$acid值变为B,那么原来定时器里的业务逻辑变成向B页面发送数据,A页面就有可能收不到数据,因为A页面的定时器里执行Gateway::sendToUid(self::$acid, ..) Gateway::sendToGroup(self::$acid, ..)都变成向B页面发送,不是向A页面发送了

  • 暂无评论
DaXin

@喵了个咪 刷新页面 就会连接这个游戏,连接游戏就会走 Timer:add

  • 暂无评论
DaXin

@喵了个咪 可以加您QQ吗

  • 暂无评论
喵了个咪

额,对不起,不加陌生人

这个问题自己多echo var_dump 下打印下调试下就出来了

  • 暂无评论
DaXin

@喵了个咪 嗯嗯,谢谢,理解。

  • 暂无评论
年代过于久远,无法发表回答
🔝