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

                # 高階篇五 命令行異步多進程隊列類的應用 >[info] 運行環境 推薦 Linux (win環境下我沒有測試過) >需要安裝Redis > ### 第一步 創建命令行運行文件 創建一個文件 繼承WorkerCommand即可! ~~~ <?php namespace app\base\command; use mikkle\tp_worker\WorkerCommand; /** * Created by PhpStorm. * Power by Mikkle * QQ:776329498 * Date: 2017/6/12 * Time: 15:07 */ class Mikkle extends WorkerCommand { } ~~~ >[danger] Ok!不要奇怪,其實就是代碼這么少! ### 第二步 注冊command文件 在app下面的command.php文件中寫入 ~~~ <?php return [ 'app\base\command\Mikkle', ]; ~~~ ### 第三步 啟動命令行 在命令行界面 進入網站的根目錄 ~~~ php think mikkle ~~~ 這樣命令行就跑起來了 ![](https://box.kancloud.cn/a092efc328be9d1a0baab9c018273186_477x143.png) 分一個窗口 運行命令查看運行狀態 `ps -ef |grep mikkle | grep -v grep` ![](https://box.kancloud.cn/38c153ff8f0c665d96054676ef32b10e_413x31.png) 這樣異步的命令行部分已經完成 ### 第四步 編寫異步隊列執行類 >[danger]只要繼承mikkle\tp_worker\WorkerBase即可 ~~~ <?php /** * Created by PhpStorm. * User: Mikkle * QQ:776329498 * Date: 2017/8/2 * Time: 15:59 */ namespace app\worker; use mikkle\tp_worker\WorkerBase; use think\Log; class Test extends WorkerBase { protected function runHandle($data) { for ($i=1 ; $i<10;$i++){ $this->sleep(1); echo '睡眠一秒'; } Log::notice( "測試" ); } } ~~~ >[info] 在這里我們只需要寫命令行回調方法runHandle即可 >data的值是通過靜態方法add添加 > ### 第五步 啟動異步隊列執行類 ~~~ $data =[ "name"=>"mikkle" ]; $Result = \app\worker\Test::add( $data); return $Result; ~~~ >[danger] Ok 搞定! 運行一下看效果 ![](https://box.kancloud.cn/b25ae16f56f7a4b1f68431a4dc6e88bb_670x400.png) >[info] 每次運行異步任務時候,命令行這邊會創建全新的子進程執行該任務!執行結束后子進程自動關閉! ###測試效果 同時開啟10個異步隊列效果 ![](https://box.kancloud.cn/735fd3c30ae01562d403e60130f21ef3_371x131.png) 程序會發起10個子進程進行處理不同的隊列任務 ### 循環任務示例 ~~~ <?php /** * Created by PhpStorm. * User: Mikkle * QQ:776329498 * Date: 2018/2/23 * Time: 16:20 */ namespace app\worker\auto; use mikkle\tp_worker\CycleWorkBase; use mikkle\tp_tools\Curl; use think\Exception; use think\Log; class Cycle extends CycleWorkBase { protected function runHandle($data) { try{ while ( true ){ self::signWorking(); Curl::get( "http://www.mikkle.cn/"); $time = $this->getNextRunTime(); $this->sleep($time); Log::notice("循環執行程序執行程序".time() ); } }catch (Exception $e){ Log::notice( $e ->getMessage()); } } protected function getNextRunTime(){ if (time()<strtotime( "02:00") ){ return 15; }elseif(time()<strtotime( "09:57") ){ return 180; }elseif(time()<strtotime( "22:00") ){ return 30; }elseif(time()<strtotime( "23:59") ){ return 15; } return 60; } } ~~~ ### 異步鉤子示例 >[info] 注冊Hook文件 tags.php ~~~ 'hook_test'=>[ "app\\base\\behavior\\worker\\Test", ], ~~~ >[info] 新建鉤子文件 繼承 mikkle\tp_worker\WorkerHookBase即可 ~~~ <?php /** * Created by PhpStorm. * User: Mikkle * QQ:776329498 * Date: 2018/2/1 * Time: 9:10 */ namespace app\base\behavior\worker; use mikkle\tp_worker\WorkerHookBase; use think\Log; class Test extends WorkerHookBase { protected function runHandle($data) { for ($i=0 ; $i<10;$i++){ $this->sleep(1); echo '睡眠一秒'; } Log::notice( "測試" ); } } ~~~ 感謝大家關注 交流請加QQ群 321449759 ![](https://box.kancloud.cn/3499008a08e64306c68873288092a057_286x340.png)
                  <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>

                              哎呀哎呀视频在线观看