<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之旅 廣告
                ## Mix WorkerPool >[info] 該工具類參考 Golang 的協程池設計思想 工作池:設定固定的協程數量并行執行任務的工具類,對于 `IO` 并行處理類需求,能達到非常高的并發性能。相對于直接 `xgo` 開啟無限制的協程,具有穩定限流的特點,可避免過高請求被對方屏蔽,或者因突發大量任務導致內存溢出。 ## 組件 使用 [composer]([https://www.phpcomposer.com/](https://www.phpcomposer.com/)) 安裝: ~~~ composer require mix/worker-pool ~~~ ## 單次投遞 適合大量數據的轉換(通過接口、數據庫)的場景,基本用法: [>> 到 GitHub 查看 DEMO <<](https://github.com/mix-php/mix-skeleton/blob/master/app/Console/Commands/WorkerPoolCommand.php) - `$maxWorkers` 為工作者數量 - `$jobQueue` 為任務投放隊列 - `$maxQueue` 為任務投放隊列的容量 - `for ($i = 0; $i < 1000; $i++) {` 循環負責投遞任務 - `$jobQueue->push($data);` 投遞一個任務數據,參數為 `Worker::handle` 執行時傳入的參數 - 當任務投遞到任務投放隊列中,任務會在 `$maxWorkers` 個工作者中的某一個執行 ## 常駐投遞 適合消息隊列(MQ)消費處理(發送郵件、短信)的場景,基本用法: [>> 到 GitHub 查看 DEMO <<](https://github.com/mix-php/mix-skeleton/blob/master/app/Console/Commands/WorkerPoolDaemonCommand.php) - `$maxWorkers` 為工作者數量 - `$jobQueue` 為任務投放隊列,設置越大 stop 等待時間越長 - `$maxQueue` 為任務投放隊列的容量 - `while (true) { ` 循環負責投遞任務 - `$this->conn->brPop(` 通過阻塞的方式從 MQ 監聽數據 - `$jobQueue->push($data);` 投遞一個任務數據,任務數據會再 `Worker::do` 方法中執行 - 當任務投遞到任務投放隊列中,任務會在 `$maxWorkers` 個工作者中的某一個執行 ## 異常處理 `Worker::do` 方法中執行的代碼無法避免會有異常拋出,這時需要用戶自行 `try/catch` 處理 ~~~php public function do($data) { try { } catch (\Throwable $exception) { // print log } } ~~~
                  <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>

                              哎呀哎呀视频在线观看