<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        swoole task怎么用

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

        swoole task怎么用

        swoole task怎么用:Swoole Task 的應用。Swoole 異步Task,主要實現調用異步任務的執行。 (推薦學習: swoole視頻教程)常用的場景:異步支付處理、異步訂單處理、異步日志處理、異步發送郵件/短信等。Swoole 的實現方式是 worker 進程處理數據請求,分配給 task 進程
        推薦度:
        導讀swoole task怎么用:Swoole Task 的應用。Swoole 異步Task,主要實現調用異步任務的執行。 (推薦學習: swoole視頻教程)常用的場景:異步支付處理、異步訂單處理、異步日志處理、異步發送郵件/短信等。Swoole 的實現方式是 worker 進程處理數據請求,分配給 task 進程

        Swoole Task 的應用。

        Swoole 異步Task,主要實現調用異步任務的執行。 (推薦學習: swoole視頻教程)

        常用的場景:異步支付處理、異步訂單處理、異步日志處理、異步發送郵件/短信等。

        Swoole 的實現方式是 worker 進程處理數據請求,分配給 task 進程執行。

        官方介紹:

        task 底層使用Unix Socket管道通信,是全內存的,沒有IO消耗。單進程讀寫性能可達100萬/s,不同的進程使用不同的管道通信,可以最大化利用多核。

        本地版本:PHP 7.2.6、Swoole 4.3.1。

        不多說,先看效果圖:

        代碼

        server.php

        class Server
        {
         private $serv;
        
         public function __construct() {
         $this->serv = new swoole_server('0.0.0.0', 9501);
         $this->serv->set([
         'worker_num' => 2, //開啟2個worker進程
         'max_request' => 4, //每個worker進程 max_request設置為4次
         'task_worker_num' => 4, //開啟4個task進程
         'dispatch_mode' => 2, //數據包分發策略 - 固定模式
         ]);
        
         $this->serv->on('Start', [$this, 'onStart']);
         $this->serv->on('Connect', [$this, 'onConnect']);
         $this->serv->on("Receive", [$this, 'onReceive']);
         $this->serv->on("Close", [$this, 'onClose']);
         $this->serv->on("Task", [$this, 'onTask']);
         $this->serv->on("Finish", [$this, 'onFinish']);
        
         $this->serv->start();
         }
        
         public function onStart($serv) {
         echo "#### onStart ####".PHP_EOL;
         echo "SWOOLE ".SWOOLE_VERSION . " 服務已啟動".PHP_EOL;
         echo "master_pid: {$serv->master_pid}".PHP_EOL;
         echo "manager_pid: {$serv->manager_pid}".PHP_EOL;
         echo "########".PHP_EOL.PHP_EOL;
         }
        
         public function onConnect($serv, $fd) {
         echo "#### onConnect ####".PHP_EOL;
         echo "客戶端:".$fd." 已連接".PHP_EOL;
         echo "########".PHP_EOL.PHP_EOL;
         }
        
         public function onReceive($serv, $fd, $from_id, $data) {
         echo "#### onReceive ####".PHP_EOL;
         echo "worker_pid: {$serv->worker_pid}".PHP_EOL;
         echo "客戶端:{$fd} 發來的Email:{$data}".PHP_EOL;
         $param = [
         'fd' => $fd,
         'email' => $data
         ];
         $rs = $serv->task(json_encode($param));
         if ($rs === false) {
         echo "任務分配失敗 Task ".$rs.PHP_EOL;
         } else {
         echo "任務分配成功 Task ".$rs.PHP_EOL;
         }
         echo "########".PHP_EOL.PHP_EOL;
         }
        
         public function onTask($serv, $task_id, $from_id, $data) {
         echo "#### onTask ####".PHP_EOL;
         echo "#{$serv->worker_id} onTask: [PID={$serv->worker_pid}]: task_id={$task_id}".PHP_EOL;
        
         //業務代碼
         for($i = 1 ; $i <= 5 ; $i ++ ) {
         sleep(2);
         echo "Task {$task_id} 已完成了 {$i}/5 的任務".PHP_EOL;
         }
        
         $data_arr = json_decode($data, true);
         $serv->send($data_arr['fd'] , 'Email:'.$data_arr['email'].',發送成功');
         $serv->finish($data);
         echo "########".PHP_EOL.PHP_EOL;
         }
        
         public function onFinish($serv,$task_id, $data) {
         echo "#### onFinish ####".PHP_EOL;
         echo "Task {$task_id} 已完成".PHP_EOL;
         echo "########".PHP_EOL.PHP_EOL;
         }
        
         public function onClose($serv, $fd) {
         echo "Client Close.".PHP_EOL;
         }
        }
        
        $server = new Server();

        client.php

        <?php
        class Client
        {
         private $client;
         public function __construct() {
         $this->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
         $this->client->on('Connect', [$this, 'onConnect']);
         $this->client->on('Receive', [$this, 'onReceive']);
         $this->client->on('Close', [$this, 'onClose']);
         $this->client->on('Error', [$this, 'onError']);
         }
         public function connect() {
         if(!$fp = $this->client->connect("127.0.0.1", 9501 , 1)) {
         echo "Error: {$fp->errMsg}[{$fp->errCode}]".PHP_EOL;
         return;
         }
         }
         public function onConnect($cli) {
         fwrite(STDOUT, "輸入Email:");
         swoole_event_add(STDIN, function() {
         fwrite(STDOUT, "輸入Email:");
         $msg = trim(fgets(STDIN));
         $this->send($msg);
         });
         }
         public function onReceive($cli, $data) {
         echo PHP_EOL."Received: ".$data.PHP_EOL;
         }
         public function send($data) {
         $this->client->send($data);
         }
         public function onClose($cli) {
         echo "Client close connection".PHP_EOL;
         }
         public function onError() {
         }
        }
        $client = new Client();
        $client->connect();

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

        文檔

        swoole task怎么用

        swoole task怎么用:Swoole Task 的應用。Swoole 異步Task,主要實現調用異步任務的執行。 (推薦學習: swoole視頻教程)常用的場景:異步支付處理、異步訂單處理、異步日志處理、異步發送郵件/短信等。Swoole 的實現方式是 worker 進程處理數據請求,分配給 task 進程
        推薦度:
        標簽: 使用 task swoole
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 四虎亚洲精品高清在线观看| 亚洲AV无码专区在线厂| 亚洲欧洲精品久久| 中文字幕在线视频免费观看| 久久久久亚洲AV成人网| 亚洲国产精品无码久久SM| g0g0人体全免费高清大胆视频| 中文字幕第13亚洲另类| 久久免费香蕉视频| 亚洲精品国产美女久久久| 嫩草成人永久免费观看| 久久久久亚洲AV成人无码网站| 久久久免费的精品| 国产日产成人免费视频在线观看| 亚洲成av人片在线天堂无| 免费在线观看中文字幕| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲avav天堂av在线网爱情| fc2免费人成在线视频| 亚洲精品少妇30p| 日本高清在线免费| 国产亚洲精品va在线| 免费国产叼嘿视频大全网站| 亚洲精品午夜视频| 国产成人精品免费视频软件| 一级毛片无遮挡免费全部| 免费涩涩在线视频网| 91精品国产亚洲爽啪在线观看| 精品香蕉在线观看免费| 亚洲熟女综合一区二区三区| 久草视频在线免费看| 久久亚洲国产成人亚| 人妻丰满熟妇无码区免费| 中文字幕亚洲免费无线观看日本| 99久久精品国产免费| 亚洲一区二区三区夜色| 曰批视频免费40分钟试看天天| 亚洲国产一区国产亚洲| 国产成人在线免费观看| 国产免费AV片在线观看播放| 亚洲AV中文无码字幕色三|