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

資訊專欄INFORMATION COLUMN

swoole學(xué)習(xí)手記(四)異步任務(wù)task

vincent_xyb / 670人閱讀

摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。什么是異步任務(wù)把當(dāng)前的任務(wù)異步投遞到進(jìn)程池中執(zhí)行,不影響接下來(lái)的事務(wù)。

目錄

初識(shí)Swoole

創(chuàng)建服務(wù)器(上)

創(chuàng)建服務(wù)器(下)

異步任務(wù)task

持續(xù)更新中。。。

什么是異步任務(wù)?

1.把當(dāng)前的任務(wù)異步投遞到TaskWorker進(jìn)程池中執(zhí)行,不影響接下來(lái)的事務(wù)。
舉個(gè)栗子:

在一些需要耗時(shí)間長(zhǎng)的任務(wù)可以采取這種方案
不管從性能的發(fā)揮還是用戶體驗(yàn)都是比傳統(tǒng)的方式舒服很多


測(cè)試

web_server.php

$server = new swoole_websocket_server("0.0.0.0", 8811);
$server->set(
    [
        "task_worker_num" => 2,//設(shè)置異步任務(wù)的工作進(jìn)程數(shù)量,可以根據(jù)任務(wù)的耗時(shí)和任務(wù)量配置適量的task進(jìn)程。
    ]
);

$server->on("message", function ($server, $frame) {
    echo "fd為: ".$frame->fd."發(fā)送了:".$frame->data."
";
    //投遞異步任務(wù)
    $task_id = $server->task($frame->fd);
      echo "我們繼續(xù)訪問(wèn)
";
});


$server->on("task", function ($server, $task_id, $from_id,$data) {
    for ($i=1; $i <=5 ; $i++) { 
         sleep(2);//休息2秒
         echo "taskid為:".$task_id."完成任務(wù)".$i."/5的任務(wù)了
";
    }
    $server->finish($data);
});

//處理異步任務(wù)的結(jié)果
$server->on("finish", function ($server, $task_id, $data) {
    echo "fd為:".$data.",task為:".$task_id."任務(wù)完成的時(shí)間是:".date("Y-m-d H:i:s")."
";
});


$server->start();

客戶端js代碼

    var url="ws://你的ip地址:8811";
    var websocket =new WebSocket(url);

websocket.onopen = function (evt) {
    console.log("Connected to WebSocket server.");
    websocket.send("客戶端:建立鏈接成功");
};

websocket.onclose = function (evt) {
    console.log("Disconnected");
};

websocket.onmessage = function (evt) {
    console.log("Retrieved data from server: " + evt.data);
};

websocket.onerror = function (evt, e) {
    console.log("Error occured: " + evt.data);
};

我們先打開(kāi)web_server,
然后通過(guò)瀏覽器打開(kāi)2個(gè)客戶端,這里為了區(qū)別進(jìn)程,2個(gè)客戶端打開(kāi)的時(shí)間我是相差了幾秒打開(kāi)的

這個(gè)時(shí)候看終端,重點(diǎn)來(lái)了:

結(jié)論

所以我們得出了以下的結(jié)論:
1.task可以作為進(jìn)程在后臺(tái)運(yùn)行不影響后面的執(zhí)行,這里是異步的
2.task可以設(shè)置多個(gè),一個(gè)task被占用,就使用另一個(gè),
3.task完成任務(wù)之后,它就會(huì)被閑置,可以給下個(gè)客戶端使用(本案例沒(méi)有展示出效果,有興趣可以test一下)

注意的地方

1.這個(gè)要注意task的數(shù)目,防止開(kāi)銷過(guò)多的性能
2.注意防止進(jìn)程的堵塞,阻塞的進(jìn)程十分耗資源而已長(zhǎng)期占用無(wú)法被下個(gè)客戶端使用
3.exit/die是危險(xiǎn)的,會(huì)導(dǎo)致Worker進(jìn)程退出

擴(kuò)展

swoole里面的異步IO 讀寫(xiě)文件 讀寫(xiě)mysql 讀寫(xiě)redis 也是異曲同工
異步IO 是先返回結(jié)果 再進(jìn)行IO,不過(guò)這種大多應(yīng)用于耗時(shí)間長(zhǎng)但是結(jié)果不影響程序的情況,比如:
文章閱讀量+1
同步的流程是 redis/mysql 數(shù)據(jù)+1->顯示文章
而異步的流程是 直接顯示文章 然后再發(fā)redis/mysql 數(shù)據(jù)+1
這樣子用戶就減少了等待的時(shí)間,當(dāng)然還有很多場(chǎng)景也適用
有興趣的小伙伴可以繼續(xù)研究文檔io的部分,這里就不繼續(xù)深究了

如果這篇文章對(duì)你有用,可以點(diǎn)個(gè)贊或者是收藏,算是對(duì)作者的鼓勵(lì)~

文檔地址傳送門(mén):https://wiki.swoole.com/wiki/...
推薦singwa老師的視頻教程:https://coding.imooc.com/clas...

另附上小弟網(wǎng)站。。。www.entercode.cn 推廣一波...

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

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

相關(guān)文章

  • Swoole學(xué)習(xí)手記(一)初識(shí)Swoole

    摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到,對(duì)我這種小白粗略看下文檔都會(huì)覺(jué)得很牛逼。個(gè)人理解就是解決這樣應(yīng)用場(chǎng)景的。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 參加工作有一段時(shí)間了,偶爾會(huì)聽(tīng)到swoole,對(duì)我這種PHP小白粗略看下文檔都會(huì)覺(jué)得很牛逼。由于學(xué)習(xí)成本比較高,自身對(duì)網(wǎng)絡(luò)異...

    yeyan1996 評(píng)論0 收藏0
  • swoole學(xué)習(xí)手記(三)創(chuàng)建服務(wù)器(下)

    摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。而它的最大特點(diǎn)就是,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 1.創(chuàng)建HttpServer服務(wù)器 HttpServer是基于swoole_server,所以s...

    aikin 評(píng)論0 收藏0
  • swoole學(xué)習(xí)手記(二)創(chuàng)建服務(wù)器(上)

    摘要:目錄初識(shí)創(chuàng)建服務(wù)器上創(chuàng)建服務(wù)器下異步任務(wù)持續(xù)更新中。。。啟動(dòng)后,客戶端無(wú)需,直接可以向監(jiān)聽(tīng)的端口發(fā)送數(shù)據(jù)包。 目錄 初識(shí)Swoole 創(chuàng)建服務(wù)器(上) 創(chuàng)建服務(wù)器(下) 異步任務(wù)task 持續(xù)更新中。。。 1.創(chuàng)建tcp服務(wù)器 先照著文檔創(chuàng)建一個(gè)tcp服務(wù)器

    cppowboy 評(píng)論0 收藏0
  • thinkphp5+swoole實(shí)現(xiàn)異步郵件群發(fā)(SMTP方式)

    摘要:圖中其他兩個(gè)文件和是郵件發(fā)送類的核心文件,為了簡(jiǎn)化調(diào)用,抽取了出來(lái),詳細(xì)的用法和參數(shù)設(shè)置,可以參考的使用說(shuō)明注意點(diǎn)在此步驟中,我們需要注意幾點(diǎn)是你設(shè)置的郵件發(fā)送的賬號(hào)是否已經(jīng)開(kāi)啟并且找對(duì)對(duì)應(yīng)的安全協(xié)議和端口號(hào)。 1、環(huán)境說(shuō)明 阿里云centos7thinkphp5.0.11swoole2.0.8 2、tp實(shí)現(xiàn)郵件發(fā)送 在項(xiàng)目下建立如下的文件目錄:showImg(https://segm...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<