我为什么要开发一个 MixPHP 框架

2017-10-11 18:17:57 +08:00
 onanying

最近业余时间一直在开发 ExpressPHP 的第二个版本 MixPHP,今天下班想起之前一个面试官的问题:你为什么还要再造一个轮子呢?仔细回想,第一个版本,现在想来确实 “炫技” 的成份比较多,现在推翻第一版,又重构一个所谓的 “全功能 PHP 框架” ,这东西又不赚钱,我到底为了啥?其实,写程序和写诗有很多相似之处,同样需要优雅的语法,好作品也同样想要有更多的人欣赏,感性完了,接下来理性的分析一下。

国内常用的框架

国内较流行的 PHP 框架,参考 Lagou 等招聘网中的招聘信息与众多同事口口相传。

ThinkPHP: 易上手,文档友好、过度封装
Yii: 安全性高、规范、性能稍差
Codeigniter: 简单、高效、文档友好
Yaf/Phalcon: C 扩展,高性能

后端开发业务场景

通常后端开发有以下这些场景:

采用多种技术,复杂度、成本必然更高

因为不同场景的诉求不同,所以很多公司采用多种框架来开发,APP 的 API 采用 Yaf/Phalcon,后台管理采用 Yii、ThinkPHP、Codeigniter,TCP/UDP 服务器又采用 Java/C++来写,一个后端开发就需招聘擅长不同框架不同语言的程序员来开发。

现有 MVC 框架的弱项

在网页 /后台管理 /API 开发方面,流行的各种 PHP 框架一直都很擅长,可是在控制台程序开发方面:

PHP 框架开发效率与性能不可兼得

Yaf/Phalcon 这样 C 扩展框架,如果开发业务十分复杂的后台与网页,开发效率不高,中小企业开发效率才是生存王道,而开发效率高的 ThinkPHP、Yii、Codeigniter 开发 API 性能又差了点,当然性能可以从架构上着手,但是如果高性能与开发效率可以兼得,岂不更好。

MixPHP 试图解决这些

结尾

许愿:希望以后所有后端开发,如用 PHP,就用一个框架可好?

GitHub

支持的用户请加个 Star 吧,让更多人发现 MixPHP。 https://github.com/mixstart/mixphp

10574 次点击
所在节点    PHP
56 条回复
sagaxu
2017-10-12 19:55:36 +08:00
@onanying 很多公司一个部门内部就有几组不同框架和不同程度的轮子,每个选型的人都有理有据,都觉得自己业务特殊,实际上很多时候把他们的框架互换,可能也没多少不利的影响。如果公司可以养 3 个以上只做基础设施不碰业务的平台开发人员,造一些轮子也无碍,不舍得养的话,另造轮子很可能得不偿失。

@hhacker 问题是资深或者高级开发,出发点不是公司利益,而是自身利益,力排众议用自己的轮子,成了可以写晋升 PPT,可以巩固自己专家地位,搞砸了大步了跑路换个公司继续坑。空降 CTO,然后全盘重构的例子多了,有多少不是政治因素,单纯技术决定的重构,只有当事人们自己清楚了。

我们公司在 PHP 技术积累上国内排前 5 应该没问题,就在这周还有好多次 coredump,一路踩过无数的坑,十次里面九次是自造轮子引起的,我们是因为每天几十亿次请求,没法选择那些用户基数大比较 stable 的 PHP 框架。
ylsc633
2017-10-12 20:00:51 +08:00
先膜拜一下大佬

将来有这能力,我也会造一下轮子...

不过.. 有一点..
如果你只是路过某个公司,在没有必要的情况下,求不坑其他同事,特别是你走后来的同事......
AlwaysBee
2017-10-12 20:25:19 +08:00
支持,虽然不赚钱,但是我觉得收获都是潜在的,刚刚也分享了一篇关于自己是如何通过免费的产品给自己引流的文章,写得不好,多多指教

https://mp.weixin.qq.com/s/k5HGT5p17f_h_NGS47D1bA
linxl
2017-10-13 09:10:37 +08:00
自己当大佬给大家用, 哈哈哈
vincenth520
2017-10-13 14:04:10 +08:00
这个框架已经在微博上被韩天峰跟鸟哥议论了
onanying
2017-10-13 17:43:56 +08:00
@Immortal 已经加上 Apache 下与 Yii/CI 的对比测试,请查看,有时间你也可以自己测试一下。
onanying
2017-10-13 17:55:42 +08:00
@vincenth520 感谢两位 PHP 界的大神对我这个小众框架的关注。
pushaowei0727
2017-10-19 14:21:07 +08:00
```
但是比 Apache/PHP-FPM 传统框架,比如:Yii/TP/CI 纯 PHP 框架,Yaf/Phalcon 这些的 C 扩展框架,都要好太多
```
本人一直用 Yaf/Phalcon 3 年有余, 看到这儿立马打算看一看,然后看了你的测试地址发现 404,不知道是怎样测试,然后点进项目里面,呃
onanying
2017-10-19 20:10:14 +08:00
@pushaowei0727 测试地址: http://www.jianshu.com/p/f769b6be1caf ,你可以安装一个测试一下,毕竟大家都带有主观思想。
gouchaoer
2017-10-19 21:58:07 +08:00
https://github.com/mixstart/mixphp/issues/2

我错了么?


另外那个 benchmark 没有意义,你往逻辑里加点 redis/mysql 看看 qps
gouchaoer
2017-10-19 22:04:26 +08:00
对了,在再渲染输出几十 kb 的 html 试试,同步阻塞的框架优化的再好也只是框架本身逻辑优化,这一块除非你像 laravel 那样自己把自己搞得很慢很复杂,否则放到实际业务里差别真不大
onanying
2017-10-20 11:59:29 +08:00
@gouchaoer MixPHP 与 Phalcon 数据库并发性能测试 http://www.jianshu.com/p/0ce1a9885e01 , 你低估了框架本身对性能的损耗。
onanying
2017-10-20 12:00:39 +08:00
@gouchaoer 而且可能也低估了常驻内存带来的性能优势。
fenghoer
2018-03-14 13:48:46 +08:00
swoole 模式下,可以支持热更新吗。还有:长期运行的话稳定性怎么样呢
tangniyuqi
2018-04-24 18:24:51 +08:00
赞一个! php MVC 行业需要你来拯救
tangniyuqi
2018-04-24 18:26:07 +08:00
建议多加入 yii2 等优秀框架的开发特性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/396858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX