国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

xuhong / 1266人閱讀

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

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

能夠異步非阻塞處理任務(wù)

能夠?qū)崟r查詢?nèi)蝿?wù)狀態(tài)

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

swoole內(nèi)置的swoole_http_server正好非常適合處理這種業(yè)務(wù),示例代碼實現(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 !== ""){
        //返回任務(wù)狀態(tài)
        $status = $redis->get($taskId);
        return $response->end("task: $taskId;status: $status");
    }   
    $params = json_encode(array(111,222));//此處處理requst請求數(shù)據(jù)作為任務(wù)執(zhí)行的數(shù)據(jù),根據(jù)需要修改
    $taskId = $http->task($params);
    $response->end("

Do task:$taskId.

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30230.html

相關(guān)文章

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

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

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

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

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

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

    Riddler 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<