老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

如何使用Think-Swoole的Task異步任務(wù)

小編給大家分享一下如何使用Think-Swoole的Task異步任務(wù),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

為企業(yè)提供網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)站優(yōu)化、營銷型網(wǎng)站、競價托管、品牌運營等營銷獲客服務(wù)。創(chuàng)新互聯(lián)建站擁有網(wǎng)絡(luò)營銷運營團隊,以豐富的互聯(lián)網(wǎng)營銷經(jīng)驗助力企業(yè)精準(zhǔn)獲客,真正落地解決中小企業(yè)營銷獲客難題,做到“讓獲客更簡單”。自創(chuàng)立至今,成功用技術(shù)實力解決了企業(yè)“網(wǎng)站建設(shè)、網(wǎng)絡(luò)品牌塑造、網(wǎng)絡(luò)營銷”三大難題,同時降低了營銷成本,提高了有效客戶轉(zhuǎn)化率,獲得了眾多企業(yè)客戶的高度認(rèn)可!

使用場景

在 Server 程序中如果需要執(zhí)行很耗時的操作,比如一個聊天服務(wù)器發(fā)送廣播,Web服務(wù)器中發(fā)送郵件。如果直接去執(zhí)行這些函數(shù)就會阻塞當(dāng)前進程,導(dǎo)致服務(wù)器響應(yīng)變慢。例如:用戶注冊場景,完成注冊并發(fā)送激活郵件的功能,需要以下幾步:

客戶端提交 POST 數(shù)據(jù) -> 服務(wù)器獲取到數(shù)據(jù) -> 完成注冊將用戶數(shù)據(jù)寫入數(shù)據(jù)庫 -> 發(fā)送賬號激活郵件 -> 返回客戶端提示注冊成功。

這個業(yè)務(wù)邏輯是沒有問題的,但是由于發(fā)送郵件是一個耗時操作(比如2-3s)并且會同步阻塞程序的執(zhí)行,直到發(fā)送成功以后響應(yīng)到客戶端提示注冊成功。這個過程中用戶從提交到最后得到注冊成功的提示估計需要4s左右,一次請求響應(yīng)需要4s這肯定是不合理的!

現(xiàn)在使用 Task 異步任務(wù)投遞可以大大提升用戶體驗,大致流程:

客戶端提交 POST 數(shù)據(jù) -> 服務(wù)器獲取到數(shù)據(jù) -> 完成注冊將用戶數(shù)據(jù)寫入數(shù)據(jù)庫 -> 馬上返回客戶端提示注冊成功。

在注冊成功同時投遞一個 Task 任務(wù) -> 異步完成郵件發(fā)送的耗時操作 (這部分時間用戶是無感知的,因為很早已經(jīng)響應(yīng)回客戶端了)。

如何使用 Think-Swoole 的 Task 異步任務(wù)的步驟

定義事件監(jiān)聽類(php think make:listener 類名)。

app/event.php 文件中定義 swoole.task 的事件監(jiān)聽。

獲取到 Swoole/Server 對象調(diào)用 task 方法(參數(shù)中傳遞剛剛定義的監(jiān)聽類)。

在剛剛定義的事件監(jiān)聽類的 handle 方法中定義觸發(fā)回調(diào)邏輯代碼。

調(diào)用觸發(fā) task swoole.finish任務(wù)完成后的 finish 方法(需要才調(diào)用,非必須)。

進行演示

首先,項目根目錄創(chuàng)建郵件發(fā)送事件:

php think make:listener EmailTask

然后定義創(chuàng)建的郵件發(fā)送事件:

app/event.php
'listen'    => [
    'AppInit'  => [],
    'HttpRun'  => [],
    'HttpEnd'  => [],
    'LogLevel' => [],
    'LogWrite' => [],
    'swoole.task' => [
        app\listener\EmailTask::class,
    ],
//  'swoole.finish' => [
//      app\listener\EmailTaskFinish::class,
//  ],
],

其中 swoole.task 這個鍵名是 Task 任務(wù)固定寫法不能隨意命名。

接著,我們在負(fù)責(zé)用戶注冊的控制器內(nèi),通過 Swoole/Server 類來調(diào)用 Task 異步任務(wù),當(dāng)然,我們要先完善 EmailTask.php 的邏輯代碼:

app/listener/EmailTask.php

 finish(\app\listener\EmailTaskFinish::class);
    }
}

注冊方法 app/controller/Register.php

 request -> isPost()){
            $data = $this -> request -> post();
            //TODO 調(diào)用驗證類驗證數(shù)據(jù)
            //TODO 將注冊信息插入數(shù)據(jù)庫
            // 這里調(diào)用 Task 異步任務(wù)
            $server -> task(\app\listener\EmailTask::class);
            // 方式二
//            $manager = app('\think\swoole\Manager');
//            $manager -> getServer() -> task(\app\listener\EmailTask::class);
            return "注冊成功!".time();
        }
    }
}

注冊業(yè)務(wù)中,插入數(shù)據(jù)庫后,調(diào)用了發(fā)送郵件異步任務(wù),在 EmailTask.php 模擬發(fā)送郵件需要 3 秒鐘。

開啟 Think-Swoole 服務(wù),訪問注冊的方法,測試一下發(fā)送郵件的時間是否計入用戶注冊方法內(nèi):

如何使用Think-Swoole的Task異步任務(wù)

可見,郵件發(fā)送的 3 秒鐘是異步進行的,用戶并無感知。

另外,還有個 swoole.finish 事件,用來通知其他事件當(dāng)前異步任務(wù)已經(jīng)完成了,同樣需要創(chuàng)建事件,在 app/event.php 中定義 swoole.finish,上述示例代碼已經(jīng)演示了。

以上是“如何使用Think-Swoole的Task異步任務(wù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁題目:如何使用Think-Swoole的Task異步任務(wù)
分享路徑:http://www.xueling.net.cn/article/gcijje.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 国产99久久一区二区三区 | 免费观看黄网站 | 日本激情视频在线播放 | 91精品国产91久久 | 四虎网站在线观看 | 国产极品久久 | 国产伦一区 | 日本视频免费观看 | 亚洲精品国产综合久久一线 | 中文字幕欧美久久日高清 | 人妻体验按摩到忍不住哀求继续 | avtt天堂网人妻系列 | 福利视频一二三在线视频免费观看 | 91成人精品爽啪在线观看 | 国产成人久久精品二区三区牛 | 麻豆传媒免费视频 | 欧美一级特黄aaaaaa在线看片 | 高清精品福利私拍国产写真 | 一级生性活片免费视频片 | 干综合网| 69久久夜色精品国产7777 | 男女好痛好深好爽视频一区 | 新版天堂资源中文8在线 | 欧美日韩性生活片 | 欧美肉大捧一进一出 | 人妻av无码专区 | 大号BBVVBBW高潮 | 午夜寂寞福利视频 | 久久6热最新地址 | 高潮岳喷我一脸 | 999免费观看视频 | 国产精久久久久久久妇剪断 | 亚洲午夜av久久乱码 | 草莓福利社区在线 | 成人免费在线播放 | 国产亚洲系列 | 久色91| 青青草免费在线观看视频 | 亚洲日产av中文字幕 | 中字幕视频在线永久在线 | 亚洲成AV人无码综合在线观看 |