<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
        主站蜘蛛池模板: 无码国产精品久久一区免费| 东方aⅴ免费观看久久av | 亚洲人成在线中文字幕| 日韩免费无码视频一区二区三区 | 黄色网址免费在线观看| 国产亚洲美女精品久久久| 一级特级女人18毛片免费视频 | 亚洲AV日韩精品久久久久| a级毛片免费观看视频| 亚洲第一福利网站| 国产92成人精品视频免费| 亚洲伊人久久大香线蕉在观| 丁香花在线观看免费观看| 亚洲精品无码中文久久字幕| 免费亚洲视频在线观看| 中国国语毛片免费观看视频| 亚洲AV无码国产丝袜在线观看 | 国产免费变态视频网址网站| 四虎成人精品国产永久免费无码| 精品国产亚洲男女在线线电影| 男的把j放进女人下面视频免费| 亚洲精品视频免费在线观看| 免费做爰猛烈吃奶摸视频在线观看 | 在线免费观看你懂的| 在线观看日本亚洲一区| 免费人成视频在线观看不卡| 999zyz**站免费毛片| 亚洲一区中文字幕在线观看| 日韩在线免费电影| 国产高清不卡免费视频| 亚洲人成色777777老人头| 亚洲人成网站18禁止一区| 少妇太爽了在线观看免费视频| 亚洲an日韩专区在线| 亚洲国产一区视频| 69视频在线观看高清免费| 老司机午夜免费视频| 亚洲av福利无码无一区二区| 精品免费久久久久久成人影院| 中文字幕在线视频免费| 亚洲午夜无码久久久久小说|