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

長連接轉(zhuǎn)發(fā)會阻塞嗎?對后端的請求做一個并發(fā)控制,會阻塞嗎,會斷開嗎?

augushong

問題描述

長連接轉(zhuǎn)發(fā)會阻塞嗎?我想對后端的請求做一個并發(fā)控制,超出的來自前端連接暫時不處理,會阻塞嗎,會斷開嗎?

我也有比較豐富的workerman開發(fā)經(jīng)驗,做個聊天服務端、物聯(lián)網(wǎng)服務端、內(nèi)網(wǎng)穿透、端口轉(zhuǎn)發(fā)等等。但是上面這個問題,還是比較糾結(jié)。

我想做的是這樣的,后端運行的是圖片轉(zhuǎn)換的http服務,但是很吃硬件,超出內(nèi)存會出錯,所以要限制并發(fā),而且一次請求響應的時間很長。

所以來自前端的連接,我打算通過workerman做個代理?;镜牧鞒滔拢?br />
可以看到,實際上流程很簡單。

這里要注意的是:

  • 要控制對后端的并發(fā)
  • 不要直接斷開前端請求(連接onConnect之后先不要處理,等后端空閑了在轉(zhuǎn)發(fā)到后端)
  • 后端的響應時間可能很長

所以我的問題是:

  • 等待后端空閑時收到的連接會斷開嗎(因為這中間不會傳輸心跳以維持鏈接,這是個Http的請求)
  • 后端的響應時間是比較長的,會發(fā)生阻塞嗎?

是不是需要做特殊的代碼處理。
因為我能想到的代碼基本如下:

$worker::$serverConnectionCount = 0;
$worker::$clientConnectionHub = [];

$worker->onWorkerStart = function(){
    Timer::add(function(){
        if($worker::$serverConnectionCount <4) {
            $client_conn = array_pop($worker::$clientConnectionHub);
            $server_conn =  new AsyncTcpConnection('后端服務地址')

            $client_conn->pipe($server_conn);
            $server_conn->pipe($client_conn);
            //實際上應該自定義實現(xiàn)轉(zhuǎn)發(fā),可以在onClose時調(diào)整$serverConnectionCount的值
            $worker::$serverConnectionCount++;

        }
    },10)
}
$worker->onConnect  = function($connection){
    $worker:$clientConnectionHub[] = $connection;

}
1130 2 0
2個回答

walkor 打賞

等待后端空閑時收到的連接會斷開嗎(因為這中間不會傳輸心跳以維持鏈接,這是個Http的請求)

可能會斷開,瀏覽器可能會在一定時間內(nèi)沒收到響應就返回超時,這個時間猜測在1分鐘左右。
另外外網(wǎng)環(huán)境連接超過1分鐘不通訊連接可能就被路由節(jié)點清理了。

后端的響應時間是比較長的,會發(fā)生阻塞嗎?

workerman作為網(wǎng)絡代理不會發(fā)生阻塞。

  • augushong 2022-12-16

    好的。
    這里的前端只是相對于這個流程來說,實際上會用隊列的消費者發(fā)起請求,
    實際上前端、路由、后端都在一個局域網(wǎng)下,
    打算用workerman 多進程守護,發(fā)起curl請求,因為設計文件傳輸,感覺用http簡單靠譜一點。
    十分感謝。
    只要不會阻塞就好。如果還是會斷開的話,實在不行這部分就放棄http的方式,自己寫tcp連接。
    十分感謝

augushong

onmessage事件觸發(fā)時,也不會阻塞嗎?

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