<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        workerman如何實現異步任務(附代碼)

        來源:懂視網 責編:小采 時間:2020-11-03 23:08:57
        文檔

        workerman如何實現異步任務(附代碼)

        workerman如何實現異步任務(附代碼):1、問題遇到一個問題,php是單線程,無法實現多線程。現在我需要使用一個場景是多個鏈接使用一個線程,也就是在一個連接進程,再開進程來處理2、解決方案 workerman如何實現異步任務。workerman可以幫我解決問題, 給予文檔一個解答問: 如何異步處理繁重的
        推薦度:
        導讀workerman如何實現異步任務(附代碼):1、問題遇到一個問題,php是單線程,無法實現多線程。現在我需要使用一個場景是多個鏈接使用一個線程,也就是在一個連接進程,再開進程來處理2、解決方案 workerman如何實現異步任務。workerman可以幫我解決問題, 給予文檔一個解答問: 如何異步處理繁重的

        1、問題

        遇到一個問題,php是單線程,無法實現多線程。現在我需要使用一個場景是多個鏈接使用一個線程,也就是在一個連接進程,再開進程來處理

        2、解決方案

        workerman如何實現異步任務。workerman可以幫我解決問題, 給予文檔一個解答

        問:

        如何異步處理繁重的業務,避免主業務被長時間阻塞。例如我要給1000用戶發送郵件,這個過程很慢,可能要阻塞數秒,這個過程中因為主流程被阻塞,會影響后續的請求,如何將這樣的繁重任務交給其它進程異步處理。

        答:

        可以在本機或者其它服務器甚至服務器集群預先建立一些任務進程處理繁重的業務,任務進程數可以開多一些,例如cpu的10倍,然后調用方利用AsyncTcpConnection將數據異步發送給這些任務進程異步處理,異步得到處理結果

        任務進程服務端

        use WorkermanWorker;
        require_once __DIR__ . '/Workerman/Autoloader.php';
        // task worker,使用Text協議
        $task_worker = new Worker('Text://0.0.0.0:12345');
        // task進程數可以根據需要多開一些
        $task_worker->count = 100;
        $task_worker->name = 'TaskWorker';
        //只有php7才支持task->reusePort,可以讓每個task進程均衡的接收任務
        //$task->reusePort = true;
        $task_worker->onMessage = function($connection, $task_data)
        {
         // 假設發來的是json數據
         $task_data = json_decode($task_data, true);
         // 根據task_data處理相應的任務邏輯.... 得到結果,這里省略....
         $task_result = ......
         // 發送結果
         $connection->send(json_encode($task_result));
        };
        Worker::runAll();

        在workerman中調用

        use WorkermanWorker;
        use WorkermanConnectionAsyncTcpConnection;
        require_once __DIR__ . '/Workerman/Autoloader.php';
        // websocket服務
        $worker = new Worker('websocket://0.0.0.0:8080');
        $worker->onMessage = function($ws_connection, $message)
        {
         // 與遠程task服務建立異步連接,ip為遠程task服務的ip,如果是本機就是127.0.0.1,如果是集群就是lvs的ip
         $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
         // 任務及參數數據
         $task_data = array(
         'function' => 'send_mail',
         'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
         );
         // 發送數據
         $task_connection->send(json_encode($task_data));
         // 異步獲得結果
         $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
         {
         // 結果
         var_dump($task_result);
         // 獲得結果后記得關閉異步連接
         $task_connection->close();
         // 通知對應的websocket客戶端任務完成
         $ws_connection->send('task complete');
         };
         // 執行異步連接
         $task_connection->connect();
        }
        Worker::runAll();

        這樣,繁重的任務交給本機或者其它服務器的進程去做,任務完成后會異步收到結果,業務進程就不會阻塞了。

        更多Workerman相關技術文章,請訪問Workerman教程欄目進行學習!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        workerman如何實現異步任務(附代碼)

        workerman如何實現異步任務(附代碼):1、問題遇到一個問題,php是單線程,無法實現多線程。現在我需要使用一個場景是多個鏈接使用一個線程,也就是在一個連接進程,再開進程來處理2、解決方案 workerman如何實現異步任務。workerman可以幫我解決問題, 給予文檔一個解答問: 如何異步處理繁重的
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲国产成人VA在线观看| 成年女人18级毛片毛片免费观看| 日本19禁啪啪无遮挡免费动图| 亚洲AV无码一区二区三区电影| 亚洲a∨国产av综合av下载| 91精品国产免费久久久久久青草| 亚洲av无码成h人动漫无遮挡| 国产精品午夜免费观看网站 | 亚洲国产成人久久综合| 久久不见久久见中文字幕免费| 亚洲国产精品美女| 777成影片免费观看| 亚洲第一成年人网站| 青青草国产免费国产是公开| 国产成人在线观看免费网站| 男女啪啪免费体验区| 亚洲国产天堂久久久久久| 久久最新免费视频| 亚洲AV本道一区二区三区四区| 日本一区二区免费看| 亚洲免费在线观看视频| 午夜老司机免费视频| 污污的视频在线免费观看| 中文字幕亚洲综合久久男男| 最近免费中文字幕中文高清| 久久久久亚洲av无码专区| 一级毛片高清免费播放| 亚洲午夜久久久影院伊人| 无码人妻一区二区三区免费n鬼沢| 亚洲综合色区在线观看| 成人久久免费网站| 中文字幕亚洲日韩无线码| 西西人体免费视频| 激情内射亚洲一区二区三区爱妻| 午夜免费啪视频在线观看| 国产成+人+综合+亚洲专| 国产四虎免费精品视频| 亚洲av无码成人影院一区 | 国产在线观a免费观看| 亚洲激情视频在线观看| 国产黄在线观看免费观看不卡|