fpm和swoole都是用于server提升php解析性能的方案,兩者本質(zhì)都是使用多進(jìn)程進(jìn)程管理的方案來解決php作為動態(tài)語言運(yùn)行性能方面的劣勢問題。
他們都是采用一個manager主進(jìn)程負(fù)責(zé)接受處理響應(yīng),主進(jìn)程負(fù)責(zé)管理接受請求數(shù)據(jù),轉(zhuǎn)發(fā)數(shù)據(jù),還有子進(jìn)程的管理工作(拉起和關(guān)閉),子進(jìn)程負(fù)責(zé)處理請求數(shù)據(jù).
首先應(yīng)該明白在web流程中,最早是使用cgi協(xié)議來用于server的通訊的,這種方法會導(dǎo)致高并發(fā)情況下頻繁創(chuàng)建銷毀進(jìn)程影響性能,之后就出現(xiàn)fast-cgi,采用多進(jìn)程管理(進(jìn)程池),避免進(jìn)程頻繁銷毀創(chuàng)建,但是進(jìn)一步的在后面各種復(fù)雜框架的出現(xiàn),使得php在初始化過程中會頻繁創(chuàng)建銷毀大對象,這樣又在一定程度上會影響性能,所以出現(xiàn)了swoole這種基于PHP的http-server,可以將將PHP對象的生命周期變成常住內(nèi)存,避免了重復(fù)創(chuàng)建銷毀大的PHP對象的問題(個人覺得非必要沒必要使用這個,有些過度設(shè)計(jì)的嫌疑,還有就是這樣做有可能會導(dǎo)致一些內(nèi)存泄漏)