我為什么要開發(fā)一個(gè) MixPHP 框架

最近業(yè)余時(shí)間一直在開發(fā)ExpressPHP的第二個(gè)版本 MixPHP,今天下班想起之前一個(gè)面試官的問題:你為什么還要再造一個(gè)輪子呢?仔細(xì)回想,第一個(gè)版本,現(xiàn)在想來確實(shí) “炫技” 的成份比較多,現(xiàn)在推翻第一版,又重構(gòu)一個(gè)所謂的 “高性能PHP框架” ,這東西又不賺錢,我到底為了啥?其實(shí),寫程序和寫詩有很多相似之處,同樣需要優(yōu)雅的語法,好作品也同樣想要有更多的人欣賞,感性完了,接下來理性的分析一下。

國內(nèi)常用的框架

國內(nèi)較流行的 PHP 框架,參考Lagou等招聘網(wǎng)中的招聘信息與眾多同事口口相傳。

框架 特點(diǎn) 流行度 更加適合
ThinkPHP 易上手,文檔友好、過度封裝 超高 網(wǎng)頁
Yii 安全性高、規(guī)范、性能稍差 網(wǎng)頁
Codeigniter 簡單、高效、文檔友好 網(wǎng)頁&API
Yaf/Phalcon C擴(kuò)展,高性能 一般 API

后端開發(fā)業(yè)務(wù)場景

通常后端開發(fā)有以下這些場景:

  • 網(wǎng)頁/后臺管理開發(fā)
  • API開發(fā)
  • TCP服務(wù)器開發(fā)
  • UDP服務(wù)器開發(fā)
  • 異步隊(duì)列消費(fèi)者開發(fā)
  • 定時(shí)任務(wù)開發(fā)

采用多種技術(shù),復(fù)雜度、成本必然更高

因?yàn)椴煌瑘鼍暗脑V求不同,所以很多公司采用多種框架來開發(fā),APP的API采用Yaf/Phalcon,后臺管理采用Yii、ThinkPHP、Codeigniter,TCP/UDP服務(wù)器又采用Java/C++來寫,一個(gè)后端開發(fā)就需招聘擅長不同框架不同語言的程序員來開發(fā)。

現(xiàn)有 MVC 框架的弱項(xiàng)

在網(wǎng)頁/后臺管理/API開發(fā)方面,流行的各種PHP框架一直都很擅長,可是在控制臺程序開發(fā)方面:

  • HTTP/TCP/UDP服務(wù)器開發(fā):還未有流行的PHP框架封裝。
  • 異步隊(duì)列消費(fèi)者開發(fā):只提供了CLI模式下運(yùn)行控制器方法,并未提供主進(jìn)程多子進(jìn)程的進(jìn)程模型,并未提供多線程處理。
  • 定時(shí)任務(wù)開發(fā):還需依賴第三方工具crontab等,PHP框架本身不能實(shí)現(xiàn)。

PHP 框架開發(fā)效率與性能不可兼得

Yaf/Phalcon這樣C擴(kuò)展框架,如果開發(fā)業(yè)務(wù)十分復(fù)雜的后臺與網(wǎng)頁,開發(fā)效率不高,中小企業(yè)開發(fā)效率才是生存王道,而開發(fā)效率高的ThinkPHP、Yii、Codeigniter開發(fā)API性能又差了點(diǎn),當(dāng)然性能可以從架構(gòu)上著手,但是如果高性能與開發(fā)效率可以兼得,豈不更好。

MixPHP 試圖解決這些

  • 高性能與開發(fā)效率兼得:參考Yii、ThinkPHP、Codeigniter提高開發(fā)效率的特性,編寫全部面向?qū)ο蟮腗VC框架,使其同時(shí)支持LNMP架構(gòu)與Swoole應(yīng)用服務(wù)器,需要開發(fā)效率時(shí)采用LNMP傳統(tǒng)架構(gòu),需要高性能API時(shí),修改少量代碼,即可切換為Swoole應(yīng)用服務(wù)器,把框架類庫預(yù)加載至內(nèi)存,數(shù)據(jù)庫按進(jìn)程長連接,可達(dá)到Y(jié)af/Phalcon的性能。
  • 多線程異步隊(duì)列服務(wù):只需寫好控制器方法,然后在配置文件中配置下路由命名空間、進(jìn)程、線程數(shù)量,就可在CLI模式中啟動(dòng)多進(jìn)程多線程模型的異步隊(duì)列處理程序。
  • 定時(shí)任務(wù)服務(wù):只需寫好控制器方法,然后配置下路由命名空間、定時(shí)循環(huán)條件,就可在CLI模式中啟動(dòng)動(dòng)態(tài)多進(jìn)程模型的定時(shí)任務(wù)處理程序。
  • TCP/UDP服務(wù):一步步來,后續(xù)版本再考慮加入。

結(jié)尾

許愿:希望以后所有后端開發(fā),如用PHP,就用一個(gè)框架可好?

PHP是最好的語言

GitHub

支持的用戶請加個(gè) Star 吧,讓更多人發(fā)現(xiàn) MixPHP。
https://github.com/mixstart/mixphp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容