如果我有實時通訊的需求,我會選擇守護進程框架(swoole或workerman)。
如果我有只寫接口的需求,我一般會選擇 fpm 框架(tp或者laravel)。
1、fpm 是多進程阻塞模型,fpm 進程管理方式有動態(tài)、靜態(tài)、按需三種。一個進程只能處理一個請求,當所有的進程都在處理請求時,那么新來的請求將會阻塞。
2、workerman 也是多進程阻塞模型,一個進程也只能處理一個請求,但是如果調(diào)用的是異步非阻塞接口,比如 workerman/redis、workerman/http-client,那么單個進程可以看作是并發(fā)處理。
打個比方,領(lǐng)導給我安排了一個項目,需求上是只需要出一些接口就行,不牽扯到即時通訊。在都能實現(xiàn)需求的情況下,我是用 fpm 框架(tp或者laravel)好呢,還是用 守護進程框架(webman) 好呢?
其實我想問的就是 守護進程框架 和 fpm 框架的區(qū)別。
麻煩大佬們能否明列一下這兩種類型框架的詳細區(qū)別,萬分感謝!
《PHP cli模式和fpm模式有什么區(qū)別、優(yōu)缺點?》
https://www.zhihu.com/question/390756372
不是阻塞模型的問題,而是webman/swoole這種是常駐內(nèi)存,比fpm非常駐內(nèi)存天生就快的,而且很多定時任務常駐內(nèi)存可以直接用,但是fpm的話你還要借助第三方插件來使用,比如supervisor這些,而且常駐內(nèi)存可以定時心跳維持對數(shù)據(jù)庫的長連接,也可以做連接池,對CURD來說更快,所以webman無論咋測都是fpm框架10倍以上的性能,但是常駐內(nèi)存會帶來進程或內(nèi)存資源的問題,比fpm要稍微麻煩一些,反正就是要性能高就webman,要省心就用fpm,fpm是你咋用都很難崩。
如果預計后面會有非http相關(guān)的內(nèi)容,比如長連接、隊列、定時任務、tcp、udp啥的,或者后期對性能有一定要求,那就一次到位直接用webman。
我感覺webman開發(fā)體驗和tp laravel差不多,看眼文檔直接就能上手了。