内容简介:imi 是基于 PHP Swoole 的高性能协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。 在 Swoole 的加持下,相比 php-fpm 请求响应能力,I/O密集型场景处理能力,有着本质上的提升。 imi 框架拥有...
imi 是基于 PHP Swoole 的高性能协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。
在 Swoole 的加持下,相比 php-fpm 请求响应能力,I/O密集型场景处理能力,有着本质上的提升。
imi 框架拥有丰富的功能组件,可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。
毫秒级的注解及代码热更新,让你在开发时只管一把梭,体验与 fpm 下开发并无二致,保存就刷新,立马看到效果。
与其他专注微服务领域的 Swoole 框架不同,imi 专注单体应用开发。原因很简单:大部分公司都不需要上微服务,单体应用足矣。
imi 框架第一个版本 v0.0.1 首发于 2018 年 6 月 21 日
本周主要推出了一个进程池和高性能协程服务器,相比传统模式,即便是跟 BASE 模式相比,也有非常大的性能提升。
imi v1.0.13
版本新增了一个 Swoole\Coroutine\Http\Server
实现的协程服务器。需要 Swoole 4.4+
才可使用该特性。
该特性是可选的,不影响以前使用的服务器模式。
使用协程服务器特性,依靠 Linux 系统的端口重用机制,系统级的负载均衡,可以让你的多进程 Http 服务处理请求的能力得到提升。
使用 ab,本机->虚拟机(双核+2进程)压测Hello World
页面,相比之前的服务器模式大概有 80% 的性能提升。该数据仅供参考,不同配置、环境、业务代码跑出来的数字会有差距,但很明显,协程服务器可以实现更高性能的 Http 服务。
优缺点比较
优点
- ????高性能,Linux 系统级的负载均衡
- ????高度可控,使用 imi 自研进程池维护 Worker 进程
- ☕无缝支持,业务代码无需做任何更改,即可享受到高性能
缺点
- 不支持 Task 特性
- 不支持监听多端口、多协议
总结
使用该特性,可以享受到高性能带来的好处,但是无法使用 Task,以及多端口多协议监听。
对于开发 Http API 的场景来讲,是非常适合用这个特性的。
更新日志
新增
-
新增支持高性能 Swoole 协程服务器,性能更加强悍,需要 Swoole 4.4+
-
新增一个可以替代 Swoole\Process\Pool 的更强大的进程池。支持信号监听、重启进程(可指定)、Pool Master 与 Worker 消息通讯等。
-
支持在项目中配置 imi 启用哪些功能模块
优化
- 优化 http 路由性能,当路由数量多时效果明显
修复
- 修复部分情况下的热更新进程残留问题
开始使用
创建 Http Server 项目:composer create-project imiphp/project-http
创建 WebSocket Server 项目:composer create-project imiphp/project-websocket
创建 TCP Server 项目:composer create-project imiphp/project-tcp
创建 UDP Server 项目:composer create-project imiphp/project-udp
完全开发手册:https://doc.imiphp.com/
imi 组件库:https://github.com/imiphp
imi 官方指定 Http 客户端(替代 Curl):https://github.com/yurunsoft/yurunhttp
欢迎各路新人和大佬的加入贡献代码的行列中,修正错别字、错误拼写、提交代码,我们全都欢迎~
最后,预祝无心工作,只想为祖国母亲庆生的大家,国庆快乐!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- xApi Manager v3.1.1 发布, 新增高性能 api 调试
- 极简的高性能框架 one 1.4.6 发布,新增参数验证器
- 高性能配置中心 duic 1.5.1 发布,新增 js-yaml 校验
- uCharts高性能跨端图表推新啦,新增图例点击、标记线、词云图、漏斗图等重磅功能
- 【架构入门 - 高性能篇】集群高性能
- 【架构入门 - 高性能篇】数据库高性能
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。