亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Swoole+Lumen:同步編程風(fēng)格調(diào)用MySQL異步查詢

lentoo / 1096人閱讀

摘要:網(wǎng)絡(luò)編程一直是的短板,盡管擴(kuò)展彌補(bǔ)了這個(gè)缺陷,但是其編程風(fēng)格偏向了或,與原本的同步編程風(fēng)格迥然相異。目前的大部分主流應(yīng)用框架依然是同步編程風(fēng)格,所以一直在探索與同步編程結(jié)合的途徑。正是連接同步編程和異步編程的一座橋梁,有興趣可以關(guān)注一下。

網(wǎng)絡(luò)編程一直是PHP的短板,盡管Swoole擴(kuò)展彌補(bǔ)了這個(gè)缺陷,但是其編程風(fēng)格偏向了NodeJS或GoLang,與原本的同步編程風(fēng)格迥然相異。目前PHP的大部分主流應(yīng)用框架依然是同步編程風(fēng)格,所以一直在探索Swoole與同步編程結(jié)合的途徑。
lumen-swoole-http正是連接同步編程Lumen和異步編程Swoole的一座橋梁,有興趣可以關(guān)注一下。
LNMP的不足

LNMP是經(jīng)典的Web應(yīng)用架構(gòu)組合,雖然(Linux、NginX、MySQL和PHP-FPM)四者各種是優(yōu)秀的系統(tǒng)或軟件,但是組合到一起的總體性能并不盡人意,明顯的不是1+1+1+1>4,而是4+3+2+1<1。Linux系統(tǒng)無可厚非,主要問題出現(xiàn)在:

從NginX到PHP-FPM

NginX利用IO多路復(fù)用機(jī)制epoll,極大地減少了IO阻塞等待,可以輕松應(yīng)對(duì)C10K??墒敲看蜰ginX將用戶請(qǐng)求傳遞給PHP-FPM時(shí),PHP-FPM總是需要從新加載PHP項(xiàng)目代碼:創(chuàng)建執(zhí)行環(huán)境,讀取PHP文件和代碼解析、編譯等操作一次又一次的重復(fù)執(zhí)行,造成不小的消耗。

從PHP-FPM到MySQL

由于PHP代碼本身是同步執(zhí)行,PHP-FPM連接MySQL查詢數(shù)據(jù)時(shí),只能空閑等待MySQL返回查詢結(jié)果。一個(gè)查詢語句執(zhí)行時(shí)間可能會(huì)需要幾秒鐘,期間PHP-FPM若是能暫時(shí)放下當(dāng)前用戶慢查詢請(qǐng)求,而去處理其他用戶請(qǐng)求,效率必然有所提高。

Swoole HTTP服務(wù)器

Swoole HTTP服務(wù)器也采用了epoll機(jī)制,運(yùn)行性能與NginX相比,雖不及,猶未遠(yuǎn)。不過Swoole HTTP服務(wù)器嵌入PHP中作為其一部分,可以直接運(yùn)行PHP,完全可以取代NginX + PHP-FPM組合。

以目前流行的為框架Lumen(Laravel的子框架)為例,用Swoole HTTP服務(wù)器運(yùn)行Lumen項(xiàng)目十分簡(jiǎn)單,只需要在$worker->onRequest($request, $response)(收到用戶請(qǐng)求)時(shí)將$request傳給Lumen處理,$response再將Lumen的處理結(jié)果返回給用戶,而且$worker的整個(gè)生命周期里只會(huì)加載一次Lumen項(xiàng)目代碼,沒有多余的磁盤IO和PHP代碼編譯的開銷。

壓力測(cè)試

在4GB+4Core的虛擬機(jī)下,測(cè)試HTTP服務(wù)器的靜態(tài)輸出:

2000客戶端并發(fā)500000請(qǐng)求,不開啟HTTP Keepalive,平均QPS:

NginX + HTML               QPS:25883.44
NginX + PHP-FPM + Lumen    QPS:828.36
Swoole + Lumen             QPS:13647.75

2000客戶端并發(fā)500000請(qǐng)求,開啟HTTP Keepalive,平均QPS:

NginX + HTML               QPS:86843.11
NginX + PHP-FPM + Lumen    QPS:894.06
Swoole + Lumen             QPS:18183.43

可以看出,Swoole + Lumen組合的執(zhí)行效率遠(yuǎn)高于NginX + PHP-FPM + Lumen組合。

異步MySQL客戶端
以上都是鋪墊,以下才是整篇文章的重點(diǎn)           
               
                                           
                       
                 

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/28332.html

相關(guān)文章

  • 了解swoole運(yùn)行模式,加速laravel應(yīng)用

    摘要:負(fù)責(zé)解釋執(zhí)行文件生成響應(yīng),最終返回給,展現(xiàn)至前端。相比于傳統(tǒng)架構(gòu),進(jìn)程模型最大的特點(diǎn)在于其多線程模式處理網(wǎng)絡(luò)請(qǐng)求,使得其能輕松應(yīng)對(duì)大量連接。這要求開發(fā)人員對(duì)于多進(jìn)程的運(yùn)行模式有更清晰的認(rèn)識(shí)更容易內(nèi)存泄露。 一、SwooleSwoole號(hào)稱重新定義了PHP,它是一個(gè)PHP擴(kuò)展,使得PHP可以使用異步的方式執(zhí)行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...

    時(shí)飛 評(píng)論0 收藏0
  • swoole——從入門到放棄(二)

    摘要:從入門到放棄二一異步毫秒定時(shí)器設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與定時(shí)器不同的是定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用清除。是一次性函數(shù),執(zhí)行完成后就會(huì)銷毀最大不超過使用定時(shí)器來刪除定時(shí)器。 swoole——從入門到放棄(二) 一、異步毫秒定時(shí)器 swoole_timer_tick:設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與after定時(shí)器不同的是tick定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用swoole_timer_clear清...

    awokezhou 評(píng)論0 收藏0
  • swoole——從入門到放棄(二)

    摘要:從入門到放棄二一異步毫秒定時(shí)器設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與定時(shí)器不同的是定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用清除。是一次性函數(shù),執(zhí)行完成后就會(huì)銷毀最大不超過使用定時(shí)器來刪除定時(shí)器。 swoole——從入門到放棄(二) 一、異步毫秒定時(shí)器 swoole_timer_tick:設(shè)置一個(gè)間隔時(shí)鐘定時(shí)器,與after定時(shí)器不同的是tick定時(shí)器會(huì)持續(xù)觸發(fā),直到調(diào)用swoole_timer_clear清...

    tinyq 評(píng)論0 收藏0
  • swoole入門4-初識(shí)swoole

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

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

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

0條評(píng)論

閱讀需要支付1元查看
<