<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 發送數據協程調度 現狀 ---- 現在 `Server/Client->send` 在緩存區已滿的情況下,會直接返回`false`,需要借助`onBufferFull`和`onBufferEmpty`這樣復雜的事件通知機制才能實現任務的暫停和恢復。 在實現需要大量發送的場景下,現有機制雖然可以實現,但非常復雜。 思路 ---- 現在基于協程可以實現一種機制,直接在當前協程內`yield`,等待數據發送完成,緩存區清空時,自動`resume`當前協程,繼續`send`數據。 * `Server/Client->send`返回`false`并且錯誤碼為`SW_ERROR_OUTPUT_BUFFER_OVERFLOW`時,不返回`false`到`php`層,而是`yield`掛起當前協程 * `Server/Client`監聽`onBufferEmpty`事件,在該事件觸發后,緩存區內的數據已被發送完畢,這時`resume`對應的協程 * 協程恢復后,繼續調用`Server/Client->send`向緩存區內寫入數據,這時因為緩存區已空,發送必然是成功的 實例 --- #### 改進前 ```php for ($i = 0; $i < 100; $i++) { //在緩存區塞滿時會直接返回`false` $server->send($fd, $data_2m); } ``` #### 改進后 ```php for ($i = 0; $i < 100; $i++) { //在緩存區塞滿時會 yield 當前協程,發送完成后 resume 繼續向下執行 $server->send($fd, $data_2m); } ``` 選項 --- 此項特性會改變底層的默認行為,因此需要額外的一個參數來開啟。 ```php $serv->set([ 'send_yield' => true, ]); ``` 影響范圍 ---- * `Swoole\Server::send` * `Swoole\Http\Response::write` * `Swoole\WebSocket\Server::push` * `Swoole\Coroutine\Client::send` * `Swoole\Coroutine\Http\Client::push`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看