真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

swoole異步調(diào)用的方法

這篇文章主要介紹了swoole異步調(diào)用的方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的永仁網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

swoole怎么異步調(diào)用?

Swoole中的異步使用

測(cè)試案例:

改寫(xiě)ws_server.php

$this->ws->set(
    [
        'worker_num' => 2,
        'task_worker_num' => 2,
    ]
);
 
$this->ws->on("open", [$this, 'onOpen']);
$this->ws->on("message", [$this, 'onMessage']);
$this->ws->on("task", [$this, 'onTask']);
$this->ws->on("finish", [$this, 'onFinish']);
$this->ws->on("close", [$this, 'onClose']);
 
public function onOpen($ws, $request) {
    var_dump($request->fd);
}
 
public function onMessage($ws, $frame) {
    echo "ser-push-message:{$frame->data}\n";
    $data = [
        'task' => 1,
        'fd' => $frame->fd,
    ];
    $ws->task($data);
    $ws->push($frame->fd, "server-push:".date("Y-m-d H:i:s"));
}
 
public function onTask($serv, $taskId, $workerId, $data) {
    print_r($data);
    // 耗時(shí)場(chǎng)景 10s
    sleep(10);
    return "on task finish"; // 告訴worker   
}
 
 
public function onFinish($serv, $taskId, $data) {
    echo "taskId:{$taskId}\n";
    echo "finish-data-sucess:{$data}\n";
}

客戶端,即ws_client.html,發(fā)送信息,服務(wù)端的onMessage接受并執(zhí)行設(shè)置數(shù)據(jù)調(diào)用onTask,在onTask中打印數(shù)據(jù)3秒后返回?cái)?shù)據(jù)給onFinish,onFinish接受數(shù)據(jù)并輸出。

用戶頁(yè)面:








chuangxiang--測(cè)試

瀏覽器:(客戶端)

swoole異步調(diào)用的方法

服務(wù)器:

swoole異步調(diào)用的方法

第一行數(shù)據(jù)為服務(wù)端輸出,一開(kāi)始建立連接的onOpen(),之后先由客戶端(ws_client.html)通過(guò)js代碼連接并發(fā)送數(shù)據(jù);第二行為發(fā)送數(shù)據(jù)前打??;發(fā)送數(shù)據(jù)到服務(wù)端后,執(zhí)行onMessage();其中再次輸出數(shù)據(jù)并建立task,調(diào)用onTask();在其中再次輸出數(shù)據(jù)并返回?cái)?shù)據(jù)給onFinish();

服務(wù)器端直接輸出是到服務(wù)器,客戶端需要通過(guò)push,send等發(fā)送到服務(wù)器

客戶端通過(guò)console.log打印數(shù)據(jù)到頁(yè)面

異步體現(xiàn)

public function onMessage($ws, $frame) {
    echo "ser-push-message:{$frame->data}\n";
    $data = [
        'task' => 1,
        'fd' => $frame->fd,
    ];
    $ws->task($data);
    $ws->push($frame->fd, "server-push:".date("Y-m-d H:i:s"));
}

這段代碼中建立一個(gè)task任務(wù)之后,不會(huì)等到任務(wù)執(zhí)行完之后再push,而是會(huì)同時(shí)進(jìn)行。在客戶端打印并發(fā)送數(shù)據(jù)后,客戶端打印的數(shù)據(jù)與onMessage中的輸出間隔很短,并不會(huì)受ontask任務(wù)中sleep的影響。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“swoole異步調(diào)用的方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


本文題目:swoole異步調(diào)用的方法
本文鏈接:http://weahome.cn/article/gsjsdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部