IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞

元胞流沙
• 阅读 5033

IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞

介绍

IMI 是基于 Swoole 开发的协程 PHP 开发框架,拥有常驻内存、协程异步非阻塞IO等优点。

IMI 框架文档丰富,上手容易,致力于让开发者跟使用传统 MVC 框架一样顺手。

IMI 框架底层开发使用了强类型,易维护,性能更强。支持 Aop ,支持使用注解和配置文件注入,完全遵守 PSR-3、4、7、11、15、16 标准规范。

框架的扩展性强,开发者可以根据实际需求,自行开发相关驱动进行扩展。不止于框架本身提供的功能和组件!

我们认为一个框架不仅需要代码健壮、简单易用,文档也是十分重要,所以文档的完善是我们工作的重点,相信一个好的文档能够让你事半功倍!

欢迎有志之士加入我们,一起开发完善!技术好的贡献代码,文笔好的贡献文档,有好的想法也欢迎与我们交流!

框架暂未实战验证,请无能力阅读和修改源代码的开发者,暂时不要用于实际项目开发,等待我们的实战检验完善,我们不希望因此为您造成不便!

官网:https://www.imiphp.com/
文档手册:https://doc.imiphp.com/

代码仓库:
码云:https://gitee.com/yurunsoft/IMI
Github:https://github.com/Yurunsoft/IMI

空项目:https://gitee.com/yurunsoft/e...
功能Demo:https://gitee.com/yurunsoft/i...

框架目标及计划

前期,计划主要完善 HTTP 服务开发,优先实现:常驻内存,避免重复加载带来的性能损耗,提升海量性能;协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等)。

待 HTTP 服务开发完善后,然后下一步会增加 TCP、UDP、WebSocket 开发支持,最后才是考虑分布式、微服务的解决方案。

功能组件

  • [x] Aop (注解 / 配置文件)
  • [x] Container (PSR-11)
  • [x] 注解
  • [x] 全局事件/类事件
  • [x] HttpServer
  • [x] HttpRequest/HttpResponse (PSR-7)
  • [x] Http 中间件、注解路由、配置文件路由 (PSR-15)
  • [x] Session (File + Redis)
  • [x] View (html + json + xml)
  • [x] 日志 (PSR-3 / File + Console)
  • [x] 缓存 (PSR-16 / File + Redis)
  • [x] Redis 连接池
  • [x] 协程 MySQL 连接池
  • [x] PDO 连接池
  • [ ] 协程 PostgreSQL 连接池
  • [x] Db 连贯操作
  • [x] 关系型数据库 模型 ORM
  • [x] 跨进程共享内存表 模型 ORM
  • [x] Task 异步任务
  • [x] 命令行开发辅助工具
  • [ ] 图形化管理工具
  • [ ] 项目热更新
  • [ ] RPC 远程调用
  • [ ] WebSocket 服务器相关……
  • [ ] TCP 服务器相关……
日志、缓存都支持:多驱动 + 多实例 + 统一操作入口

所有连接池都支持:同步 + 异步 + 多驱动 + 多实例

文档

完全开发手册

QQ群:74401592 IMI 基于 Swoole 开发的协程 PHP 开发框架 常驻内存、协程异步非阻塞,如有问题会有人解答和修复。

运行环境

  • PHP >= 7.0
  • Composer
  • Swoole >= 2.2.0 (必须启用协程,如使用 Redis 请开启)
  • Hiredis (需要在安装 Swoole 之前装)

版权信息

IMI 遵循 Apache2 开源协议发布,并提供免费使用。

鸣谢

感谢以下开源项目 (按字母顺序排列) 为 IMI 提供强力支持!

项目起源

在机缘巧合下,我偶然接触到了 Swoole 2.x 版本,在简单了解和demo调试后我认为,Swoole 可能是未来 PHP 微服务架构开发必不可少的扩展。

众所周知,PHP 是被其它语言看不起的宇宙第一编程语言,PHP 仅仅是一个脚本语言,仅仅是一个模版引擎,没有强类型规范开发,维护非常不便。

PHP 7 来了,强类型的支持加入,增强了 PHP 的可维护性并提升了性能,IMI 底层就使用了非常多的强类型进行开发和规范。

宇润我在 2013 年开发并发布了第一个框架 YurunPHP,一直维护使用至今,非常稳定,并且有文档。

我待过的公司有用过这个框架,我还是很幸运的,有机会在实战中不断改进完善框架。

PHP 进入 Swoole 时代,我本着学习 Swoole 并且尝试能否开发一个基于 Swoole 的框架的想法,接触了解到了 EasySwoole 和 Swoft。

喜闻乐见的是,我先参考了一下这两个框架的文档和用法,再简单看了一下源代码。我决定还是先从 Swoole 看起,实战是最可以锻炼人的。于是我走上了 IMI 开发的不归路……

点赞
收藏
评论区
推荐文章
风斗 风斗
4年前
Kotlin 协程中,关于 runBlocking, launch ,withContext ,async,doAsync 之间的简单区别
引入大佬的话,Kotlin的协程,本质上是一个线程框架,它可以方便的切换线程的上下文(如主线程切换到子线程/子线程切回主线程)。而平时我们要想在AndroidStudio使用协程,先要在gradle引入协程依赖:implementation"org.jetbrains.kotlinx:kotlinxcoroutinescore:1.3.3"
Wesley13 Wesley13
4年前
go 协程
packageutilsimport("bytes""fmt""runtime""strconv")_/\__获取协程__ID\/_funcGetGoroutineID(){b:make(\\byte,64)b\b\:runtime.Stack(b,false)\b\
Stella981 Stella981
4年前
Gevent简明教程
1、前述进程线程协程异步并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。多进程编程在python中有类似C的os.fork,更高层封装的有multiprocessing标准库多线程编程python中有Thread和threading异步编程在linux下主要有三种实现selec
Stella981 Stella981
4年前
Coroutine in Java协程
转自 https://segmentfault.com/a/1190000006079389?fromgroupmessage&isappinstalled0说到协程(Coroutine)
Stella981 Stella981
4年前
Goroutine(协程)为何能处理大并发?
简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依旧保持高性能。进程、线程、协程的关系和区别:进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。协程和线程一样共享堆
Wesley13 Wesley13
4年前
Go 并发
Go并发并发指的是同时处理多个任务的能力。并行指的是并行处理多个任务的能力。并行不一定加快运行速度,因为并行组件之间可能需要互相通信。Go中使用协程,信道来处理并发。协程Go中主要通过协程实现并发。协程是与其他函数或方法一起并发运行的函数或方法,协程可以看作是轻量级线程,但是创建成本更小,我们经常
Stella981 Stella981
4年前
Python 协程与 Go 协程的区别(二)
👆“Python猫”,一个值得加星标的公众号花下猫语:今天继续分享协程系列的第二篇。万字长文,收藏起来慢慢读吧。PS:原文中有挺多参考链接,微信不能很好保留。故建议阅读原文。作者:lgj\_bky(经作者授权转载)原文:https://www.cnblogs.com/lgjbky/p/10838035.html写在前面
Easter79 Easter79
4年前
Swoole2.0内置协程并发测试
Swoole2.0是一个革命性的版本,它内置了协程的支持。与Go语言协程不同,Swoole协程完全不需要开发者添加任何额外的关键词,直接以过去最传统的同步阻塞模式编写代码,底层自动进行协程调度实现异步IO。使并发编程变得非常简单。最新的版本中,内置协程已支持PHP7,同时兼具了性能和并发能力,Swoole的强大超乎想象。本文基于Github最新的Sw
Android Kotlin 协程初探 | 京东物流技术团队
1它是什么(协程和Kotlin协程)1.1协程是什么维基百科:协程,英文Coroutine\2为什么选择它(协程解决什么问题)异步场景举例:1.第一步:接口获取当前用户token及用户信息2.第二步:将用户的昵称展示界面上3.第三步:然后再通过这个toke