swoole 是一種常駐內(nèi)存進(jìn)程 Reactor 模式的框架。
支持 Swoole 的 Web 框架:
1. Laravel-Swoole https://github.com/swooletw/laravel-swoole
2. Laravel-S https://github.com/hhxsv5/laravel-s
3. Swoft https://github.com/swoft-cloud/swoft
4. Hyperf https://github.com/hyperf/hyperf
5. One https://github.com/lizhichao/one
6. EasySwoole https://github.com/easy-swoole/easyswoole
1 和 2 可以讓 Swoole 支持 Laravel 框架;個(gè)人更傾向于 Hyperf;Swoft 很好,但也很重,如果要使用Swoft,不如考慮換個(gè)技術(shù)棧,比如 Java 或 Python。
優(yōu)點(diǎn):
1. 高性能
在 https://www.techempower.com/benchmarks/ 的測(cè)試中完勝 Node.js
2. 支持 Coroutine
Coroutine 可以將步代碼轉(zhuǎn)換成異步執(zhí)行,而不需要通過(guò)回調(diào),也遠(yuǎn)比 Node.js 的 async/await 優(yōu)雅。
3. 支持 channel
這點(diǎn)已經(jīng)可以媲美 golang 了。
缺點(diǎn):
1. 內(nèi)存泄露
通過(guò) max_request 設(shè)置 Worker 進(jìn)程的生命周期,也可以通過(guò)設(shè)置 PHP 的 memory_limit 來(lái)限制進(jìn)程的內(nèi)存使用,超出內(nèi)存使用限制的 PHP 進(jìn)程會(huì)退出,然后 Manager 進(jìn)程會(huì)重新拉起一個(gè)新的 Worker 進(jìn)程(Manager 進(jìn)程不運(yùn)行 PHP 代碼,所以不會(huì)內(nèi)存泄露)。
2. 代碼熱更新
3. 兼容性
Swoole 的運(yùn)行模式并非 PHP 原生模式,所以并不能保證所有的 PHP 擴(kuò)展的第三方庫(kù)能夠完美兼容。Swoole 支持的數(shù)據(jù)庫(kù)只有 MySQL 和 Postgresql,另外緩存也僅支持 Redis,不過(guò)說(shuō)實(shí)話也夠用了,如果需要支持其他外部服務(wù),完全可以通過(guò) Agent 模式來(lái)實(shí)現(xiàn)。
總結(jié)
Swoole 不適合作為直接處理用戶請(qǐng)求的 Web 框架,用來(lái)作為后端任務(wù)處理器會(huì)更加適合。總的來(lái)說(shuō),Swoole 框架目前的設(shè)計(jì)還是挺先進(jìn)。想要了解更多swoole教程或相關(guān)資訊歡迎關(guān)注編程學(xué)習(xí)網(wǎng)
掃碼二維碼 獲取免費(fèi)視頻學(xué)習(xí)資料
- 本文固定鏈接: http://www.wangchenghua.com/post/8140/
- 轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載必須在正文中標(biāo)注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費(fèi)視頻資料
查 看2022高級(jí)編程視頻教程免費(fèi)獲取