• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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
    主站蜘蛛池模板: 6080亚洲精品午夜福利| 日韩午夜高清福利片在线观看欧美亚洲精品suv | 久久亚洲精品中文字幕| 精品无人区无码乱码大片国产| 久久r热这里有精品视频| 日韩精品无码一区二区三区| 久久久久久噜噜精品免费直播| 四虎国产精品免费入口| 2048亚洲精品国产| 欧美精品久久久久久久自慰| 亚洲AV日韩精品一区二区三区| 国产三级国产精品国产普男人| 麻豆精品不卡国产免费看| 亚洲AV无码久久精品成人| 午夜精品久久久久成人| 久久久久亚洲精品天堂久久久久久 | 欧美精品高清在线xxxx| www.精品| 四虎影永久在线观看精品| 99热精品在线| 99re国产精品视频首页| 国产美女精品一区二区三区| 四虎成人精品永久免费AV| 在线观看亚洲精品国产| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 精品不卡一区二区| 久久国产精品99国产精| 亚洲码国产精品高潮在线| 宅男在线国产精品无码| 夜夜爽一区二区三区精品| 亚洲精品无码精品mV在线观看| 正在播放国产精品每日更新| 亚洲处破女AV日韩精品| 久久久国产精品亚洲一区| 精品久久久久久无码专区| 国产成人精品优优av| 国产精品久久久久9999高清| 精品久久一区二区| 2021最新国产精品一区| 911亚洲精品国内自产| 成人免费精品网站在线观看影片 |