国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

多個(gè)定時(shí)器 不同的客戶端長(zhǎng)時(shí)間停留 數(shù)據(jù)混亂

雪曇花

定義了兩個(gè)定時(shí)器,根據(jù)來(lái)源的不同,發(fā)送不同的數(shù)據(jù),現(xiàn)在如果單獨(dú)訪問(wèn)沒有問(wèn)題,我在兩個(gè)瀏覽器,同時(shí)訪問(wèn)兩個(gè)數(shù)據(jù),一個(gè)不動(dòng),另一個(gè)刷新幾次,這兩個(gè)端接收都是同一個(gè)數(shù)據(jù)了,

我想實(shí)現(xiàn)的是客戶端只有第一次訪問(wèn)的時(shí)候,會(huì)發(fā)送數(shù)據(jù)過(guò)來(lái),發(fā)送后,就一直是服務(wù)端定時(shí)推送數(shù)據(jù)給這個(gè)客戶端
[attach]2232[/attach]
?

3281 4 0
4個(gè)回答

six

你的邏輯有bug吧,$this->cmd和$this->params是所有定時(shí)器共享的,在onMessage里更改了$this->cmd和$this->params,所有定時(shí)器都影響了

  • 雪曇花 2019-07-04

    onMessage無(wú)法設(shè)置定時(shí),這樣的話,怎么針對(duì)每個(gè)客戶端,獲得者兩個(gè)數(shù)據(jù)啊?

six

針對(duì)連接的對(duì)象是$connection啊,$connection->cmd = 'xxxx'; $connection->params = 'xxxx'; 。
?
還有,在onClose的時(shí)候要把對(duì)應(yīng)連接的定時(shí)器也刪除,不然你的定時(shí)器數(shù)量是無(wú)限增長(zhǎng),假設(shè)有1萬(wàn)個(gè)定時(shí)器每秒跑一次,你的業(yè)務(wù)基本就掛了。

  • 雪曇花 2019-07-04

    那定時(shí)器放到onworkerstart里的話,是不是可以就一個(gè)的?但是這樣的話,針對(duì)用戶跑的話,是不是又不對(duì)了

six

?一個(gè)定時(shí)器也可以啊。你可以設(shè)置一個(gè)定時(shí)器,然后
foreach($worker->connections as $connection){
? ? switch ($connection->cmd) {
? ? ? ? $connection->sned(...);
? ? }
}
遍歷所有連接 判斷$connection->cmd = 'xxxx'; $connection->params = 'xxxx'; 并生成數(shù)據(jù)發(fā)送

  • 雪曇花 2019-07-04

    之前是這樣做的,但是也是數(shù)據(jù)錯(cuò)亂的,比如我不同瀏覽器開啟訪問(wèn)不同的接口,如果刷新的話,返回成一樣的數(shù)據(jù)了

  • six 2019-07-04

    那應(yīng)該是你業(yè)務(wù)邏輯的bug,針對(duì)每個(gè)連接設(shè)置cmd params不會(huì)亂。所有連接你都用$this->cmd來(lái)生成數(shù)據(jù)所有連接當(dāng)然都一樣了。這很容易理解吧

  • 雪曇花 2019-07-04

    @1393:理解了,但是就是不知道如何解決這個(gè),如何針對(duì)每個(gè)鏈接的cmd推送?。∫?yàn)橐粋€(gè)頁(yè)面打開,對(duì)方不刷新,這樣的話,就需要服務(wù)端針對(duì)這個(gè)鏈接一直推送數(shù)據(jù)了

  • six 2019-07-04

    上面示例代碼都給了...,你還不會(huì)

  • 雪曇花 2019-07-04

    @1393:最早就是這樣的,有問(wèn)題,所以想問(wèn)個(gè)思路,看看有什么好的辦法

雪曇花

[attach]2233[/attach]
之前就是這樣做的,就是這樣會(huì)有問(wèn)題的

  • six 2019-07-04

    大哥,上面說(shuō)過(guò)2遍了,$this->cmd是所有連接都共享的,用$connection->cmd來(lái)存儲(chǔ)每個(gè)連接的cmd

  • 雪曇花 2019-07-04

    @1393:強(qiáng),謝謝

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??