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