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

成員變量數(shù)據(jù)映射不一致

z985342160

問(wèn)題描述

代碼中定義map變量保存映射關(guān)系,偶爾出現(xiàn)一種情況,machineConnectionMap與connectionMachineMap的數(shù)據(jù)不對(duì)等,比如machineConnectionMap為[1=>2],connectionMachineMap為[1=>2,2=>3],machineConnectionMap中少了一條映射。

整個(gè)代碼中僅在onClose中有unset掉map,對(duì)于這個(gè)問(wèn)題有點(diǎn)莫名其秒,完全不知道從哪里下手排查。

PS:因?yàn)閼?yīng)用很簡(jiǎn)單,所以只開(kāi)了一個(gè)進(jìn)程(即處理連接又處理業(yè)務(wù),也只能開(kāi)一個(gè)進(jìn)程,否則多進(jìn)程內(nèi)map數(shù)據(jù)得不到共享)

class Serve {
/**
     * 當(dāng)連接建立時(shí)觸發(fā)的回調(diào)函數(shù)
     */
    public function onConnect($connection)
    {
        $this->logInfo('新連接:' . $connection->id, 'connection.new');

        /** @param TcpConnection $connection */
        $connection->onWebSocketConnect = function($connection) {
            $machine = $_GET['machine_id'];

            $this->machineConnectionMap[$machine->id] = $connection->id;
            $this->connectionMachineMap[$connection->id] = $machine->id;
            $this->connections[$connection->id] = $connection;
        };
    }

    /**
     * 當(dāng)連接斷開(kāi)時(shí)觸發(fā)的回調(diào)函數(shù)
     *
     * @param $connection
     */
    public function onClose($connection)
    {
        if (isset($this->connectionMachineMap[$connection->id])) {
            $machineId = $this->connectionMachineMap[$connection->id];

            unset($this->machineConnectionMap[$machineId]);
            unset($this->connectionMachineMap[$connection->id]);
        }

        unset($this->connections[$connection->id]);
    }

    public function onWorkerStart($worker)
    {
        Timer::add(3, function () {
            // 有在這里調(diào)用$this方法使用map變量
        });
    }
}
70 0 0
0個(gè)回答

??