1.如題
2.假如把其他mvc框架(laravel、yii2等)用webman的寫法整合到workerman里邊,是不是有一些東西無(wú)法常駐內(nèi)存。并且,因?yàn)榻M件多會(huì)導(dǎo)致性能不如webman好?
1、webman性能高主要是由于常駐內(nèi)存。
在webman里很多初始化在進(jìn)程啟動(dòng)的時(shí)候就完成了,然后便常駐內(nèi)存復(fù)用。
傳統(tǒng)框架做不到這點(diǎn),比如傳統(tǒng)框架一個(gè)請(qǐng)求到來要從磁盤加載N多php文件并解析(開啟opcache雖然可以節(jié)省磁盤開銷,但仍然有讀共享內(nèi)存開銷、實(shí)例化各種類的開銷),然后實(shí)例化各種類,包括框架相關(guān)的類、控制器、路由、中間鍵、連數(shù)據(jù)庫(kù)redis、執(zhí)行業(yè)務(wù)代碼,斷開數(shù)據(jù)庫(kù)redis,銷毀前面初始化的所有東西。
而webman一個(gè)請(qǐng)求到來直接就執(zhí)行業(yè)務(wù)代碼,沒有其它消耗。因?yàn)槠渌脑谶M(jìn)程啟動(dòng)的時(shí)候就完成了。所以webman要比傳統(tǒng)框架快幾倍到幾十倍。
2、用workerman改寫都可以做到常駐內(nèi)存。組件都是按需加載的,比如有1萬(wàn)個(gè)組件,但是請(qǐng)求只用了其中一個(gè),和有2個(gè)組件,請(qǐng)求中只用了一個(gè),性能沒有區(qū)別。