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

workerman接收大量數(shù)據(jù)的問(wèn)題

blue1018

現(xiàn)在有一個(gè)程序,接收大量的數(shù)據(jù) ,并且用一個(gè)進(jìn)程進(jìn)行較耗時(shí)的處理。我想問(wèn),處理過(guò)程中,買沒(méi)接收的數(shù)據(jù)存在哪呢,會(huì)不會(huì)因?yàn)閿?shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)丟失了?

4967 3 0
3個(gè)回答

walkor 打賞

發(fā)送的數(shù)據(jù)在socket緩沖區(qū),如果緩沖區(qū)滿了,會(huì)有兩種類情況,
1、客戶端是阻塞寫,則寫操作會(huì)發(fā)生阻塞,也就是客戶端會(huì)等待socket緩沖區(qū)有空閑時(shí)繼續(xù)寫入,如果socket緩沖區(qū)長(zhǎng)時(shí)間沒(méi)有空閑,可能會(huì)返回超時(shí)錯(cuò)誤,超時(shí)時(shí)間由寫入時(shí)的參數(shù)決定。超時(shí)后如何處理由客戶端業(yè)務(wù)邏輯決定,選擇等一會(huì)兒在寫,或者放棄,放棄的話數(shù)據(jù)可能就沒(méi)了
2、客戶端是非阻塞寫,則返回一個(gè)錯(cuò)誤碼,客戶端通過(guò)錯(cuò)誤碼能知道是socket緩沖區(qū)滿,這時(shí)后客戶端可以選擇等一會(huì)兒在寫,或者放棄,放棄的話數(shù)據(jù)可能就沒(méi)了

所以情況不一定

  • blue1018 2018-09-07

    我使用的是Channel,組件,是不是這屬于第二種情況?如果這樣我想加大緩沖區(qū)防止數(shù)據(jù)丟失,下面這樣做合適嗎,
    TcpConnection::$defaultMaxSendBufferSize = 210241024;
    $channel_server = new Channel\Server('0.0.0.0', Main::$CONFIG["CHANNEL_PORT"]);
    if (!defined('GLOBAL_START')) {
    Worker::runAll();
    }

blue1018

我補(bǔ)充一下我的問(wèn)題,
我的應(yīng)用,有進(jìn)程A負(fù)責(zé)接收數(shù)據(jù),然后通過(guò)Channel,發(fā)送給進(jìn)程B
進(jìn)程B處理速度慢,數(shù)據(jù)就會(huì)在ChannelServer的緩沖區(qū)里吧?
為了防止丟失,我該增加ChannelServer鏈接的緩存區(qū),這樣處理可以嗎?

  • 暫無(wú)評(píng)論
walkor 打賞

增加緩沖區(qū)也不能保證100%沒(méi)問(wèn)題,因?yàn)榫彌_區(qū)還是有滿的可能

  • 暫無(wú)評(píng)論
年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??