成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

使用swoole實現(xiàn)異步任務處理

xuhong / 1318人閱讀

摘要:使用實現(xiàn)異步任務處理,有以下幾個目標能夠異步非阻塞處理任務能夠實時查詢任務狀態(tài)任務完成之后,可以執(zhí)行一些操作或者回調內置的正好非常適合處理這種業(yè)務,示例代碼實現(xiàn)如下存儲任務處理結果和進度請求過濾返回任務狀態(tài)此處處理請求數(shù)

使用swoole實現(xiàn)異步任務處理,有以下幾個目標:

能夠異步非阻塞處理任務

能夠實時查詢任務狀態(tài)

任務完成之后,可以執(zhí)行一些操作或者回調

swoole內置的swoole_http_server正好非常適合處理這種業(yè)務,示例代碼實現(xiàn)如下

php#!/bin/env php
connect("127.0.0.1", 6379);

$http->set([
    "worker_num" => 2,
    "open_tcp_nodelay" => true,
    "task_worker_num" => 2,
    "daemonize" => true,
    "log_file" => "/tmp/swoole_http_server.log",
]);

$http->on("request", function(swoole_http_request $request, swoole_http_response $response) use ($http, $redis) {
    //請求過濾
    if($request->server["path_info"] == "/favicon.ico" || $request->server["request_uri"] == "/favicon.ico"){
        return $response->end();
    }   
    $taskId = isset($request->get["taskId"]) ? $request->get["taskId"]: ""; 
    if($taskId !== ""){
        //返回任務狀態(tài)
        $status = $redis->get($taskId);
        return $response->end("task: $taskId;status: $status");
    }   
    $params = json_encode(array(111,222));//此處處理requst請求數(shù)據作為任務執(zhí)行的數(shù)據,根據需要修改
    $taskId = $http->task($params);
    $response->end("

Do task:$taskId.

"); }); $http->on("Finish", function($serv, $taskId, $data){ //TDDO 任務結束之后處理任務或者回調 echo "$taskId task finish"; }); $http->on("task", function($serv, $taskId, $fromId, $data) use($redis){ //任務處理,可以把處理結果和狀態(tài)在redis里面實時更新,便于獲取任務狀態(tài) for($i = 0; $i < 100;$i++){ $redis->set($taskId, $i); sleep(1); } return $i;//必須有return 否則不會調用onFinish }); $http->start();

如有更好方案,請多多指教。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/30230.html

相關文章

  • PHP 使用 Swoole - TaskWorker 實現(xiàn)異步操作 Mysql

    摘要:要實現(xiàn)上述的異步處理,只需要增加兩個事件回調即可和這兩個回調函數(shù)分別用于執(zhí)行任務和處理任務的返回結果。還需要注意的是,服務器如果檢測到長時間沒有沒有查詢,則會斷開連接回收資源所以要有斷線重連的機制。 在一般的 Server 程序中都會有一些耗時的任務,比如:發(fā)送郵件、聊天服務器發(fā)送廣播等。如果我們采用同步阻塞的防水去執(zhí)行這些任務,那么這肯定會非常的慢。 Swoole 的 TaskWor...

    CKJOKER 評論0 收藏0
  • swoole入門4-初識swoole

    摘要:當某種網絡事件發(fā)生時,會回調用戶設置的指定回調函數(shù)。承擔了底層網絡事件的監(jiān)聽及各種底層事件處理,當收到請求時,會觸發(fā)事件提醒,然后將控制權轉交預先注冊的事件回調函數(shù),來進行后續(xù)的處理。請求到來時創(chuàng)建,請求結束后銷毀。 運行流程圖 showImg(https://segmentfault.com/img/remote/1460000017207791);showImg(https://s...

    forsigner 評論0 收藏0
  • PHP并發(fā)IO編程之路

    摘要:下文如無特殊聲明將使用進程同時表示進程線程。收到數(shù)據后服務器程序進行處理然后使用向客戶端發(fā)送響應。現(xiàn)在各種高并發(fā)異步的服務器程序都是基于實現(xiàn)的,比如。 并發(fā) IO 問題一直是服務器端編程中的技術難題,從最早的同步阻塞直接 Fork 進程,到 Worker 進程池/線程池,到現(xiàn)在的異步IO、協(xié)程。PHP 程序員因為有強大的 LAMP 框架,對這類底層方面的知識知之甚少,本文目的就是詳細介...

    Riddler 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<