我爲何要開發一個 MixPHP 框架

最近業餘時間一直在開發ExpressPHP的第二個版本 MixPHP,今天下班想起以前一個面試官的問題:你爲何還要再造一個輪子呢?仔細回想,第一個版本,如今想來確實 「炫技」 的成份比較多,如今推翻初版,又重構一個所謂的 「高性能PHP框架」 ,這東西又不賺錢,我到底爲了啥?其實,寫程序和寫詩有不少類似之處,一樣須要優雅的語法,好做品也一樣想要有更多的人欣賞,感性完了,接下來理性的分析一下。php

國內經常使用的框架

國內較流行的 PHP 框架,參考Lagou等招聘網中的招聘信息與衆多同事口口相傳。git

框架 特色 流行度 更加適合
ThinkPHP 易上手,文檔友好、過分封裝 超高 網頁
Yii 安全性高、規範、性能稍差 網頁
Codeigniter 簡單、高效、文檔友好 網頁&API
Yaf/Phalcon C擴展,高性能 通常 API

後端開發業務場景

一般後端開發有如下這些場景:程序員

  • 網頁/後臺管理開發
  • API開發
  • TCP服務器開發
  • UDP服務器開發
  • 異步隊列消費者開發
  • 定時任務開發

採用多種技術,複雜度、成本必然更高

由於不一樣場景的訴求不一樣,因此不少公司採用多種框架來開發,APP的API採用Yaf/Phalcon,後臺管理採用Yii、ThinkPHP、Codeigniter,TCP/UDP服務器又採用Java/C++來寫,一個後端開發就需招聘擅長不一樣框架不一樣語言的程序員來開發。github

現有 MVC 框架的弱項

在網頁/後臺管理/API開發方面,流行的各類PHP框架一直都很擅長,但是在控制檯程序開發方面:面試

  • HTTP/TCP/UDP服務器開發:還未有流行的PHP框架封裝。
  • 異步隊列消費者開發:只提供了CLI模式下運行控制器方法,並未提供主進程多子進程的進程模型,並未提供多線程處理。
  • 定時任務開發:還需依賴第三方工具crontab等,PHP框架自己不能實現。

PHP 框架開發效率與性能不可兼得

Yaf/Phalcon這樣C擴展框架,若是開發業務十分複雜的後臺與網頁,開發效率不高,中小企業開發效率纔是生存王道,而開發效率高的ThinkPHP、Yii、Codeigniter開發API性能又差了點,固然性能能夠從架構上着手,可是若是高性能與開發效率能夠兼得,豈不更好。數據庫

MixPHP 試圖解決這些

  • 高性能與開發效率兼得:參考Yii、ThinkPHP、Codeigniter提升開發效率的特性,編寫所有面向對象的MVC框架,使其同時支持LNMP架構與Swoole應用服務器,須要開發效率時採用LNMP傳統架構,須要高性能API時,修改少許代碼,便可切換爲Swoole應用服務器,把框架類庫預加載至內存,數據庫按進程長鏈接,可達到Yaf/Phalcon的性能。
  • 多線程異步隊列服務:只需寫好控制器方法,而後在配置文件中配置下路由命名空間、進程、線程數量,就可在CLI模式中啓動多進程多線程模型的異步隊列處理程序。
  • 定時任務服務:只需寫好控制器方法,而後配置下路由命名空間、定時循環條件,就可在CLI模式中啓動動態多進程模型的定時任務處理程序。
  • TCP/UDP服務:一步步來,後續版本再考慮加入。

結尾

許願:但願之後全部後端開發,如用PHP,就用一個框架可好?後端

PHP是最好的語言安全

GitHub

支持的用戶請加個 Star 吧,讓更多人發現 MixPHP。 
https://github.com/mixstart/mixphp服務器

相關文章
相關標籤/搜索