日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql异步非阻塞方式_如何理解swoole异步非阻塞?

發布時間:2023/12/1 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql异步非阻塞方式_如何理解swoole异步非阻塞? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳統的apache2handler或php-fpm本質上都是短生命周期(請求后釋放資源)的FastCGI運行模式. 請求來了,master進程會調用worker進程來處理,處理完后釋放資源. 假設你在functions.php里定義了1000個函數,那么每次請求,都要重新定義一次,有一定的性能損失. 好處則是修改保存代碼后,下一個請求立即生效. 不過,PHP內置了opcache擴展,可以把functions.php對應的二進制中間碼opcode緩存在內存,避免每個請求重復解析一次functions.php. 每次請求,只需重新執行一次functions.php對應的opcode指令. 另外,為了避免每次請求都重復建立MySQL/Redis等外部資源的連接,PHP引入了持久連接的機制. 讓內存常駐的Apache工作進程或者PHP-FPM工作進程來維持到MySQL/Redis的長連接, 下次代碼中出現 new PDO() 或者 new Redis() 時,連接存在則直接返回,連接超時斷開則自動重連并返回. 這些操作對PHP開發者來說是透明的,但也有一些注意事項,因為一個MySQL長連接對應一次MySQL會話, MySQL會話中修改的東西(比如事務是否自動提交)會影響到下一次請求.

而Swoole內置的服務器(HTTP/WebSockets/MQTT/TCP/UDP),需要運行在php-cli下,是一個php-cli下的daemon守護進程服務. 也就是說,PHP邏輯是內存常駐的,服務啟動后,只需加載和執行一次functions.php. 所以在函數和類以及其他全局資源的定義上,內存常駐的服務有性能優勢. 但缺點是修改functions.php代碼,必須重啟PHP服務才能生效.

除了內存常駐外,異步當然也是Swoole高性能的一個原因,也是Swoole核心競爭力所在. 但需要明確的是,異步是用來解決IO阻塞的場景的有效手段,所以異步最直觀的性能優勢就是: 無需多線程,一個進程在同一時間就能維持成千上萬(C10K)甚至百萬(C1000K)個連接,這就是所謂的"并發". 另外,Swoole也內置了很多異步的客戶端(HTTP/Redis/MySQL等),用這些客戶端能夠異步發起多個請求訪問外部資源(API),而不會阻塞當前工作進程. 而且,Swoole還內置了異步毫秒定時器,讓開發者在PHP里實現定時任務變得輕而易舉. 還有,Swoole內置了task進程池,能讓開發者把CPU計算密集或其他一些還沒有實現異步的操作(比如SMTP發送郵件)放到task進程池里跑, 避免阻塞worker進程,讓worker盡量保持異步非阻塞的狀態. 總而言之,Swoole就是盡量利用異步思想來減少阻塞對服務吞吐量的影響,從而提升性能.

Swoole高性能的三大因素:

底層用C實現 + PHP邏輯內存常駐 + 異步服務器端和客戶端

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的mysql异步非阻塞方式_如何理解swoole异步非阻塞?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。