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