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

源碼問題求教?。。。?!

我心飛揚

在GatewayWorker\Lib\Gateway.php 中有一些代碼中有可能會拋出一些異常信息 比如

    /**
     * 踢掉當(dāng)前客戶端
     *
     * @return bool
     * @throws Exception
     */
    public static function closeCurrentClient()
    {
        if (!Context::$connection_id) {
            throw new Exception('closeCurrentClient can not be called in async context');
        }
        return self::kickAddress(long2ip(Context::$local_ip) . ':' . Context::$local_port, Context::$connection_id);
    }

假如真的拋出了異常的情況下,worker進(jìn)程會停止么?

3165 7 0
7個回答

walkor 打賞

會停止。主進(jìn)程會立刻fork一個新的worker進(jìn)程

  • 我心飛揚 2016-09-22

    這種情況下 在worker進(jìn)程中創(chuàng)建的定時器和一些全局對象是不是也就失效了?出現(xiàn)這種情況 一些常駐內(nèi)存的業(yè)務(wù)邏輯是不是會受到影響?比如我的一個Worker就是一個房間 房間中保存的游戲數(shù)據(jù)會丟失么?

我心飛揚

這種情況下 在worker進(jìn)程中創(chuàng)建的定時器和一些全局對象是不是也就失效了?出現(xiàn)這種情況 一些常駐內(nèi)存的業(yè)務(wù)邏輯是不是會受到影響?比如我的一個Worker就是一個房間 房間中保存的游戲數(shù)據(jù)會丟失么?

  • 暫無評論
walkor 打賞

對,會定時器會失效。不過可以在onWorkerStart時根據(jù)你的業(yè)務(wù)邏輯重建定時器。
進(jìn)程中最好保存臨時數(shù)據(jù),重要數(shù)據(jù)建議保存到mysql等存儲中。

像上面貼的在異步環(huán)境中closeCurrentClient()會觸發(fā)異常,這個主要是為了開發(fā)階段方便發(fā)現(xiàn)問題,否則業(yè)務(wù)開發(fā)排查bug會比較困難。這種明顯的錯誤不應(yīng)該在正式的運營環(huán)境中出現(xiàn),在開發(fā)或者測試階段就應(yīng)該發(fā)現(xiàn)。

如果需要在內(nèi)存中存儲一些重要數(shù)據(jù),你的業(yè)務(wù)代碼上線前必須保證沒有問題,不會出現(xiàn)致命錯誤,不要指望任何框架能夠避免致命錯誤。

  • 暫無評論
我心飛揚

謝謝你的回復(fù)?。。?/p>

  • 暫無評論
walkor 打賞

不客氣

  • 暫無評論
aidong_wang

@walkor 請問為何不能再 async context 關(guān)閉指定的 client?
workerman 中 async content 有哪些?

  • 暫無評論
walkor 打賞

可以在異步環(huán)境關(guān)閉指定的client,但是不能用Gateway::closeCurrentClient接口,因為異步環(huán)境里關(guān)閉當(dāng)前連接時無法確定誰時當(dāng)前連接(onMessage里可以用這個接口Gateway::closeCurrentClient)。
異步環(huán)境里應(yīng)該用Gateway::closeClient($client_id)接口,把client_id傳進(jìn)去,這樣明確指定是關(guān)閉誰。

  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??