IMI

基于 Swoole 的协程 PHP 开发框架
授权协议 MulanPSL-1.0
开发语言 PHP
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 尉迟龙光
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

imi 是基于 PHP Swoole 的高性能协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。

在 Swoole 的加持下,相比 php-fpm 请求响应能力,I/O密集型场景处理能力,有着本质上的提升。

imi 框架拥有丰富的功能组件,可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。

毫秒级的注解及代码热更新,让你在开发时只管一把梭,体验与 fpm 下开发并无二致,保存就刷新,立马看到效果。

与其他专注微服务领域的 Swoole 框架不同,imi 专注单体应用开发。原因很简单:大部分公司都不需要上微服务,单体应用足矣。

核心组件

  • HttpApi、WebSocket、TCP、UDP 服务器
  • MySQL 连接池 (主从+负载均衡)
  • Redis 连接池 (主从+负载均衡)
  • 超好用的 ORM (Db、Redis、Tree)
  • 毫秒级热更新
  • AOP
  • Bean 容器
  • 缓存 (Cache)
  • 配置读写 (Config)
  • 枚举 (Enum)
  • 事件 (Event)
  • 门面 (Facade)
  • 验证器 (Validate)
  • 锁 (Lock)
  • 日志 (Log)
  • 异步任务 (Task)

扩展组件

开始使用

创建 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

完全开发手册

运行环境

  • Linux 系统 (Swoole 不支持在 Windows 上运行)
  • PHP >= 7.1
  • Composer
  • Swoole >= 4.3.0
  • Redis、PDO 扩展

版权信息

imi 遵循 木兰宽松许可证(Mulan PSL v1) 开源协议发布,并提供免费使用。

鸣谢

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

  • 今天宇润给大家分享一下,在 imi 框架里怎么做文件下载和导出 Excel。 首先给大家演示一下 imi 文件下载: /** * @Action */ public function downloadFile() { $this->response->sendFile(__FILE__); } __FILE__ 可以改成你要让用户下载的文件名 然后是导出 Excel 文件,首先我们

  • imi框架的好用,使得用户越来越多,但水平是参差不齐的。 最近就有小白问宇润,怎么在imi框架里怎么写全局函数。 其实很简单,就是用 Composer 自带的加载文件特性。 在 composer.json 中修改 autoload.files: "autoload": { "psr-4": { "ImiApp\\": "./" }, "files": [

  • 近日,有用户来问宇润,他用的是 imiphp/imi-workerman-gateway。Workerman 作为网关和注册中心,Swoole 作为 Worker。 他的问题是,循环向客户端推送大量数据(大概几百K到几MB不等),在浏览器中只能收到前几次,后面的就收不到了。 Gateway 网关层还会报错:send buffer full and drop package 这个问题一般出现在,服务

  • imi框架是一个非常强大的 PHP+Swoole 框架,下面教大家如何在imi框架中实现自动生成图片验证码。 /** * @Action */ public function vcode() { // 生成验证码 $width = 80; $height = 30; $img = imagecreatetruecolor($width, $height);

  • 宝塔去php配置直接删除所有禁用函数 php.ini配置 file_uploads = on  允许文件上传 upload_max_filesize = 8m 最大上传文件大小 post_max_size = 8m POST允许最大值 swoole配置 package_max_length = 2 * 1024 * 1024  上传默认为2m可以自行增加,具体可以去swoole文档搜索packag

  • *&---------------------------------------------------------------------* *& Report  ZOSD0022                                                    * *&                                                    

 相关资料
  • imi 框架基于Swoole的PHP协程开发框架,高性能,功能强大,运行稳定,开发方便,支持 Http、Http2、WebSocket、TCP、UDP、MQTT 等主流协议的服务开发,特别适合互联网微服务、即时通讯聊天im、物联网等场景!

  • <?php use Yurun\Util\YurunHttp; use Yurun\Util\HttpRequest; // 设置默认请求处理器为 Swoole YurunHttp::setDefaultHandler(\Yurun\Util\YurunHttp\Handler\Swoole::class); // Swoole 处理器必须在协程中调用 go('test'); functio

  • PHP语言是一个短生命周期的Web编程语言,很多PHPer已经形成了fpm下编程的思维定势。实际上在Swoole出现之后,这种串行化编程的模式早已被打破。使用Swoole完全可以轻易实现更灵活的并发编程。 场景介绍 假设我们要做一个石头剪刀布的Web游戏,3个玩家同时提交竞猜后显示胜者。在传统串行化Web编程中,我们一般思路是这样: 设置 form 表单,用户提交竞猜后保存到 MySQL/Redi

  • 本文档主要记录 Swoole 内核开发的各项规范、技术原因、讨论。 并行 进程池 线程池 TCP buffer reactor 线程 connection_list 内存管理 RingBuffer 环形内存池 全局变量 taskwait 的 result 内存 版本管理 奇偶数单双号原则 开发流程规范化 Docker Alpine 环境 编码风格 API 命名 C 语言符号优先级 为什么使用 bz

  • 本文向大家介绍php基于协程实现异步的方法分析,包括了php基于协程实现异步的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php基于协程实现异步的方法。分享给大家供大家参考,具体如下: github上php的协程大部分是根据这篇文章实现的:http://nikic.github.io/2012/12/22/Cooperative-multitasking-using-corou

  • swoole 的用法实际上对于大多数新手来说一直并不怎么友好,其实这不怪 swoole,只能怪萌新们确实底子不够,有些东西理解起来可能真的比较困难。今天斗胆尝试引入一个应用场景和简单的代码案例来做个简单的入门,算是抛砖头引和田玉吧。 老韩 wiki.swoole.com 以及一些社区中一直说 swoole 既可以同步又可以异步,我找一些原话,你们感受一下: Swoole 不仅支持异步,还支持同步。

  • imi 实现了一个可以替代 Swoole 进程池的更强大的进程池。支持信号监听、重启进程(可指定)、Pool Master 与 Worker 消息通讯等。 基于 Swoole\Process 实现,内部已实现了信号监听。 使用 $workerNum = 4; $processPool = new \Imi\Process\Pool($workerNum); // 初始化事件-可选 $process

  • 本文向大家介绍基于Vue开发数字输入框组件,包括了基于Vue开发数字输入框组件的使用技巧和注意事项,需要的朋友参考一下 随着 Vue 越来越火热, 相关组件库也非常多啦, 只用轮子怎么够, 还是要造起来!!! 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumbe