多個(gè)頁面刷新倒計(jì)時(shí)時(shí)間會(huì)混亂,有沒有遇到的怎么解決
如果你這個(gè)定時(shí)器同時(shí)運(yùn)行多個(gè),并且$last_time是不同的值,那輸出的end_time肯定是亂的啊。如果是這樣的話這個(gè)業(yè)務(wù)邏輯確實(shí)有點(diǎn)問題。
@喵了個(gè)咪 一個(gè)頁面小游戲,頁面有倒計(jì)時(shí)功能,倒計(jì)時(shí)歸0游戲結(jié)束,一個(gè)頁面單獨(dú)打開這個(gè)小游戲,無論頁面怎么刷新都沒事,多個(gè)頁面打開同一個(gè)小游戲,比如有A,B,C三個(gè)頁面同時(shí)進(jìn)行這個(gè)小游戲,在倒計(jì)時(shí)的過程中,無論刷新A頁面,B頁面,還是C頁面,其他兩個(gè)頁面的倒計(jì)時(shí)就會(huì)停止,當(dāng)前刷新的這個(gè)頁面倒計(jì)時(shí)時(shí)間出現(xiàn)混亂也不是當(dāng)前刷新頁面的倒計(jì)時(shí),變成B頁面或者C頁面的倒計(jì)時(shí)。我看了下是Timer:add的問題,沒找到解決方案
@six 這個(gè)$last_time每個(gè)頁面倒計(jì)時(shí)的時(shí)間是不一樣的,這個(gè)小游戲每個(gè)運(yùn)行時(shí)間是不一樣的
大概知道現(xiàn)象了。
刷新頁面會(huì)觸發(fā)什么邏輯呢,一般來說一個(gè)頁面刷新不會(huì)影響其它頁面接收數(shù)據(jù),其它頁面倒計(jì)時(shí)不會(huì)停止才對(duì)。是不是onClose里做了什么特殊操作。
我知道了,你定時(shí)器里共用了self::$acid這個(gè)全局變量,假設(shè)A頁面self::$acid=A,這時(shí)候B頁面進(jìn)入游戲,B頁面的self::$acid=B,那么會(huì)出現(xiàn)self::$acid值變?yōu)锽,那么原來定時(shí)器里的業(yè)務(wù)邏輯變成向B頁面發(fā)送數(shù)據(jù),A頁面就有可能收不到數(shù)據(jù),因?yàn)锳頁面的定時(shí)器里執(zhí)行Gateway::sendToUid(self::$acid, ..) Gateway::sendToGroup(self::$acid, ..)都變成向B頁面發(fā)送,不是向A頁面發(fā)送了