站長資訊網
        最全最豐富的資訊網站

        swoole用什么協議

        swoole用什么協議

        TCP是一個流式的協議,客戶端向服務器發送一段數據后,可能并不會被服務器一次就完整的接收到。客戶端向服務器發送多段數據,可能服務器一次就接收到了全部。 (推薦學習: swoole視頻教程)

        在實際應用中,希望在服務器上能夠一次接收一段完整的數據,不多也不少。

        傳統的TCP服務器中,往往需要由程序員維護一個緩存區,先將讀取到數據寫入緩存區,然后再通過預先設定好的協議內容來區分一段完整數據的開頭、結尾和長度,并將一段完整的數據交給邏輯部分處理,這就是自定義協議的功能。

        在Swoole中已經在底層實現了一個數據緩存區,并內置了幾種常用的協議類型,并直接在底層做好了數據的拆分,以保證在onReceive回調函數中,一定能夠收到一個或數個完整的數據段。

        數據緩存區的大小可以通過配置pakcage_max_length來控制。

        $configs = []; $configs["package_max_length"] = 8192; $server->set($configs);

        swoole目前支持兩種通訊協議:EOF結束符協議、固定包頭加包體協議

        package_max_length

        package_max_length用于設置最大數據包尺寸,當開啟open_length_check或open_eof_check或open_http_protocol等協議解析后,Swoole底層會進程數據包拼接,此時在數據包未收取完整時,所有數據都將保存在內存中。

        所以需要設置package_max_length一個數據包最大允許占用的內存尺寸。

        如果同時有1萬個TCP連接在發送數據,每個數據包2MB,在最極端的情況下會占用20GB的內存空間。所以此參數不宜設置過大,否則會占用很大的內存。

        相關配置選項

        open_length_check

        當發現數據包長度超過package_max_length時會直接丟棄此數據并關閉連接,因此不會占用任何內存,適用于websocket、mqtt、http2協議。

        open_eof_check

        由于無法事先得知數據包的長度,所以接收到的數據還是會保存在內存中持續增長。當發現內存占用已經超過package_max_length時,將直接丟地此數據包并關閉連接。

        open_http_protocol

        HTTP的GET請求最大允許8KB數據且無法修改此配置,POST請求會檢測Content-Type,如果發現超過package_max_length則直接丟地此數據,并發送HTTP 400錯誤并關閉連接。

        EOF協議

        使用一組固定的、不會在正常數據內出現的字符串/r/n作為分割協議的標記,稱之為EOF協議。

        什么是EOF協議呢?

        EOF全稱 End of File,使用rn作為結束標記。

        在逐個讀取數據流中的數據時,如果發現讀到EOF標記,就表示已經讀到數據末尾。

        在TCP的數據流中,使用EOF協議的數據流的特征是|數據|EOF|數據|EOF|。

        EOF協議處理的原理是在每串正常數據的末尾會添加一個預先規定的且絕對不會再數據中出現的字符串作為結束標記,這樣接收到的數據就可以根據EOF標記來切分數據。

        典型的memcached、ftp、stmp都是使用/r/n作為結束符。當發送數據時只要在數據包的末尾添加/r/n即可。

        使用EOF協議處理一定要確保數據包中間不會出現EOF,否則將會造成分包錯誤。

        swoole用什么協議

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 亚洲国产精品碰碰| 在线精品无码字幕无码AV| 久久99精品国产麻豆婷婷| 国产精品亚洲一区二区三区在线 | 少妇亚洲免费精品| 99久久精品免费看国产一区二区三区| 亚洲精品狼友在线播放| 国产手机在线精品| 国产精品亚洲片在线va| 亚洲国产精品无码久久一线| 九九热这里只有国产精品| 欧美大片日韩精品| 国产成人精品日本亚洲| 亚洲av成人无码久久精品| 日批日出水久久亚洲精品tv | 精品麻豆丝袜高跟鞋AV| 亚洲精品无码久久久| 久久99精品久久久久久不卡| 国产成人精品久久综合 | 久久青青草原精品影院| 成人国产精品免费视频| 亚洲精品无码成人AAA片| 亚洲?V乱码久久精品蜜桃 | 精品亚洲欧美中文字幕在线看 | 欧美精品亚洲精品日韩专区va| 国产福利精品一区二区| 精品久久8x国产免费观看| 无码人妻精品一区二区三区在线| 日本精品自产拍在线观看中文 | 精品日本一区二区三区在线观看| 国产精品va久久久久久久| 成人国内精品久久久久影院VR| 97精品伊人久久久大香线蕉 | 中文精品久久久久国产网址| 国产精品久久久福利| 国产精品欧美一区二区三区不卡| 国产精品自拍一区| 欧美精品手机在线播放| 97久久精品人人澡人人爽| 亚洲欧美日韩精品永久在线| 91麻豆精品一二三区在线|