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

資訊專欄INFORMATION COLUMN

Swoole+Lumen:同步編程風格調用MySQL異步查詢

lentoo / 1031人閱讀

摘要:網絡編程一直是的短板,盡管擴展彌補了這個缺陷,但是其編程風格偏向了或,與原本的同步編程風格迥然相異。目前的大部分主流應用框架依然是同步編程風格,所以一直在探索與同步編程結合的途徑。正是連接同步編程和異步編程的一座橋梁,有興趣可以關注一下。

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

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

從NginX到PHP-FPM

NginX利用IO多路復用機制epoll,極大地減少了IO阻塞等待,可以輕松應對C10K。可是每次NginX將用戶請求傳遞給PHP-FPM時,PHP-FPM總是需要從新加載PHP項目代碼:創建執行環境,讀取PHP文件和代碼解析、編譯等操作一次又一次的重復執行,造成不小的消耗。

從PHP-FPM到MySQL

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

Swoole HTTP服務器

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

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

壓力測試

在4GB+4Core的虛擬機下,測試HTTP服務器的靜態輸出:

2000客戶端并發500000請求,不開啟HTTP Keepalive,平均QPS:

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

2000客戶端并發500000請求,開啟HTTP Keepalive,平均QPS:

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

可以看出,Swoole + Lumen組合的執行效率遠高于NginX + PHP-FPM + Lumen組合。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28332.html

相關文章

  • 了解swoole運行模式,加速laravel應用

    摘要:負責解釋執行文件生成響應,最終返回給,展現至前端。相比于傳統架構,進程模型最大的特點在于其多線程模式處理網絡請求,使得其能輕松應對大量連接。這要求開發人員對于多進程的運行模式有更清晰的認識更容易內存泄露。 一、SwooleSwoole號稱重新定義了PHP,它是一個PHP擴展,使得PHP可以使用異步的方式執行,就像node一樣,而且還能使用socket,為PHP提供了一系列異步IO、事件...

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

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

    tinyq 評論0 收藏0
  • swoole——從入門到放棄(二)

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

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

    摘要:當某種網絡事件發生時,會回調用戶設置的指定回調函數。承擔了底層網絡事件的監聽及各種底層事件處理,當收到請求時,會觸發事件提醒,然后將控制權轉交預先注冊的事件回調函數,來進行后續的處理。請求到來時創建,請求結束后銷毀。 運行流程圖 showImg(https://segmentfault.com/img/remote/1460000017207791);showImg(https://s...

    forsigner 評論0 收藏0

發表評論

0條評論

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