<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 如何實現異步任務 **問:** 如何異步處理繁重的業務,避免主業務被長時間阻塞。例如我要給1000用戶發送郵件,這個過程很慢,可能要阻塞數秒,這個過程中因為主流程被阻塞,會影響后續的請求,如何將這樣的繁重任務交給其它進程異步處理。 **答:** 可以在本機或者其它服務器甚至服務器集群預先建立一些任務進程處理繁重的業務,任務進程數可以開多一些,例如cpu的10倍,然后調用方利用AsyncTcpConnection將數據異步發送給這些任務進程異步處理,異步得到處理結果。 **swoole支持處理異步任務** 投遞一個異步任務到task_worker池中。此函數是非阻塞的,執行完畢會立即返回。Worker進程可以繼續處理新的請求。使用Task功能,必須先設置 task_worker_num,并且必須設置Server的onTask和onFinish事件回調函數。 ~~~php int swoole_server::task(mixed $data, int $dst_worker_id = -1) $task_id = $serv->task("some data"); //swoole-1.8.6或更高版本 $serv->task("taskcallback", -1, function (swoole_server $serv, $task_id, $data) { echo "Task Callback: "; var_dump($task_id, $data); }); ~~~ 此功能用于將慢速的任務異步地去執行,比如一個聊天室服務器,可以用它來進行發送廣播。當任務完成時,在task進程中調用$serv->finish("finish")告訴worker進程此任務已完成。當然swoole_server->finish是可選的。 task底層使用Unix Socket管道通信,是全內存的,沒有IO消耗。單進程讀寫性能可達100萬/s,不同的進程使用不同的管道通信,可以最大化利用多核。 task_worker的數量在swoole_server::set參數中調整,如task_worker_num => 64,表示啟動64個進程來接收異步任務 這樣,繁重的任務交給本機或者其它服務器的進程去做,任務完成后會異步收到結果,業務進程就不會阻塞了。
                  <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>

                              哎呀哎呀视频在线观看