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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 進程池管理 進程池管理其實也是基于自定義進程實現的多進程處理。為每個worker進程創建綁定的進程,這些綁定的進程專門為綁定的worker服務,類似于service mesh的服務管理思想。主要包含兩個類 ~~~ Swoolefy\Core\Pools\PoolsManager ~~~ PoolsManager主要是管理pools創建和通信的類,具體代碼可以查看源碼 ~~~ Swoolefy\Core\Pools\AbstractProcessPools ~~~ AbstractProcessPools是一個處理的抽象類,自定義進程處理的邏輯過程必須繼承該類。主要實現三個方法: ~~~ // 此方法是自定義啟動后執行的方法 public abstract function run(Process $process); // 此方法是自定義進程kill掉時執行的方法 public abstract function onShutDown(); // 此方法是與worker通信接收worker的write數據的方法 public abstract function onReceive($str); ~~~ 例如下面的一個進程,專門用來發短信的。 ~~~ <?php namespace App\Pools\TestPools; use Swoole\Process; use Swoolefy\Core\Swfy; use Swoolefy\Core\Pools\AbstractProcessPools; // 繼承實現AbstractProcessPools的方法 class Sms extends AbstractProcessPools { public $chan_mysql; public function run(Process $process) { // 啟動時執行 $args = $this->getArgs(); //var_dump($args); } public function onReceive($str) { // worker 發送str信息,這里觸發短信發送,主要邏輯處理 var_dump('gggggg'); } public function onShutDown() {} } ~~~ ### 如何創建 1、在啟動類的onInit中創建注冊進程池 ~~~ <?php namespace App\Init; use Swoolefy\Core\Swfy; use Swoolefy\Core\EventHandler; use Swoolefy\Core\Process\ProcessManager; use Swoolefy\Core\Pools\PoolsManager; class Init extends EventHandler { // 創建上面的Sms的進程,為每個worker進程創建2個sms進程來處理發短信,那么每個worker進程在處理業務時,就有專有worker進程來處理sms業務了,而且不會發生所謂多個進程爭搶發送的問題,因為worker是綁定進程的 /** * addProcess 添加創建進程并綁定當前worker進程 * @param string $processName //當前進程名稱,例如sms * @param string $processClass // 處理類 * @param int $process_num_bind_worker 每個worker綁定的進程數,也即是為每個worker附加的自定義進程數,默認綁定一個process * @param boolean $async // 是否異步 * @param array $args // 變量參數 * @param mixed $extend_data //額外變量 PoolsManager::getInstance()->addProcessPools('sms', \App\Pools\TestPools\Sms::class, 1, true, []); } ~~~ 上面很簡單就注冊了worker的進程池,那么接下來如何使用呢?其實很簡單 ``` // 在worker進程中 PoolsManager::getInstance()->writeByProcessPoolsName('sms', "請發送sms"); ``` // 在自定義進程的onReceive()中就可以接受到信息了 ``` public function onReceive($str) { // worker 發送str信息,這里觸發短信發送,主要邏輯處理 var_dump($str);// 此處將打印出 "請發送sms" } ``` 那小伙伴有會問,那自定義進程如何與wroker通信呢?其實也很簡單直接調用sendMessage()方法可以直接將信息發送給對應的worker進程 ``` public function onReceive($str) { // worker 發送str信息,這里觸發短信發送,主要邏輯處理 var_dump($str);// 此處將打印出 "請發送sms" // 處理完sms發送邏輯 // 調用sendMessage發信息給對應的worker進程 $this->sendMessage("自定義進程處理完了sms發送"); } ``` 那么問題又來了,worker進程此時又該如何接收到綁定自定義進程發送返回的信息呢?這個也很簡單,直接在 onPipeMessage($server, $src_worker_id, $message)中處理。這個方法在protocol/App/HttpServer.php中 ~~~ public function onPipeMessage($server, $src_worker_id, $message) { // 此處會輸出返回的內容: "自定義進程處理完了sms發送" var_dump($message); ~~~ 至此,整個流程算是完成了。
                  <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>

                              哎呀哎呀视频在线观看