大小:0.61 MB更新:2022-01-27 15:11:20
类别:编程开发系统:WinAll
包名:
imi是一个应用开发框架。有了这个软件,用户可以创建新的应用程序。可以利用内置的功能组件开发相关的应用功能模块,提供MySQL连接池(主从+负载均衡)、超级用户ORM (Db、Redis、Tree)等核心组件。无论您是配置请求还是配置移动通信,都可以在软件中轻松开发相应的功能。基于软件PHP Swoole的开发,如果你了解Swoole,可以快速使用imi创建新的开发项目。您可以配置多个开发项目,创建多个子项目,在软件中创建Swoole Request事件,以及创建RequestContext。如果你需要这个软件,可以下载使用!
imi框架——一个基于Swoole的PHP协同开发框架
能量高,功能强大,运行稳定,开发方便。
支持Http、Http2、WebSocket、TCP、UDP、MQTT等主流协议的服务开发。
特别适合互联网微服务、即时通讯聊天im、物联网等场景!
内存常驻:作为Swoole框架,可以避免反复加载造成的能量损失,提高能量。
异步处理:提高数据库查询等I/O密集型场景的并发处理能力。
毫秒级热更新重启:imi的开发效率和传统PHP框架一样,保存和查看,开发体验和fpm没什么区别。
imi框架功能组件
最好的Swoole框架是什么?当然imi!
Http服务器
Http2服务器
网络套接字服务器
Tcp服务器
Udp服务器
MQTT服务器
集装箱(PSR-11)
Aop注射
Http中间件(PSR-15)
MySQL连接池(主从+负平均值)
Redis连接池(负载平衡)
Db相干操作
ORM连贯工作
可记忆模型
验证器(验证)
智(-3)
缓存(PSR-16)
Redis模型
任务异步任务
流程/流程池
命令行开发辅助工具
以及注释和代码的毫秒级热更新。
开始新项目
项目初始化
创建一个Http服务器项目:composer-pProjectimiPHP/pProject-Http
创建网络套接字服务器项目:Composer-pjectimiPHP/pject-网络套接字
创建TCP服务器项目:Composer-p projectimiPHP/p project-TCP
创建UDP服务器项目:Composer-PjectimiPHP/Pject-UDP
创建MQTT服务器项目:Composer-PjectimiPHP/Pject-MQTT
如何操作请参见上述项目中的README.md。
项目最终将使用什么协议与上面的命令行无关。命令行项目只提供了一个快捷方式,可以通过修改配置文件来改变服务的通信协议。
生产过程说明
在imi框架中,一个项目分为一个主项目和多个子项目。
其中,科目是必选的,孩子是可选的。孩子是通过监听端口实现的,一般不建议打开太多孩子。
您需要为框架创建一个Main.php,每个都在它的名称空间目录中,并将类命名为Main。
项目的Main必须继承Imi Main AppBaseMain类。
的Main必须继承Imi Main BaseMain类。
并实现__init()方法:
您可以在其中进行一些初始化,但大多数时候您不需要做任何事情。
流程名称管理
imi以统一的方式管理已启动进程的进程名。您可以在@ app.pcess中进行自定义。默认设置为:
异常捕获出错
imi底层框架支持将错误转化为异常。尝试& # 8230;接住接住。
默认情况下,它未启用。您可以通过配置设置错误捕获的级别并启用它:
config.php豆类配置
与llphp的原生err_reporting()函数参数相同。
引发的异常类是ErrException。
子(单项目多端口多协议)
imi原生支持一个项目、单次启动以及对多个端口和多个协议的监控。
比如想搭建一个聊天系统,http用于注册、登录、上传文件等,WebSocket用于即时通讯。
Http和WebSocket同时在同一个项目中,代码之间没有间隙,可以很容易地相互调用和重用。
子配置
项目概况:
命名空间配置
在子命名空间所在的目录中,您需要创建一个Main.php条目文件。
子配置文件
文件:config/config.php
只有在beanScan中配置了才能扫描,批注才能生效。
内部进程间通信
为了便于过程内的通信,进行数据交换。imi v1.2.0版增加了内部进程间通信包。
通过使用由Swoole提供的sendMessage()和onPipeMessage事件来实现。
在onPipeMessage事件中,当接收到指定结构的数据时,会触发相应的事件。
我们只需要监控事件。
介绍
数据结构
事件名称
Imi.pipe _ message.action名称
代码示例
发送并聆听。
发送:
监视器:
活动名称是IMI。PIPE_MESSAGE.test
并发送返回的数据。
思考:
一般来说,发送消息不像http请求,必须有响应结果。
但是有时候,我们需要得到返回的数据。
方法很简单,比如发送数据的动作叫做testRequest,然后定义一个testResponse动作监视器来接收数据。
然后用Channel进行协调,等待响应结果。完美!
发送请求并等待响应:
收听请求:
活动名称是IMI。PIPE_MESSAGE.testRequest
监控响应:
活动名称是IMI。PIPE_MESSAGE.testResponse
注入值注释
imi中有一种标注,支持动态向标注亏格注入值,只有在调用标注亏格时才实时计算返回。
注释描述
@ConstValue
从常数中读取值
@ConfigValue
从配置中读取值
@注入
对象注入,使用:App::getBean()
@RequestInject
对象注入,使用:RequestContext::getBean()
与@Inject相同
@回调
回调注释
示例用法
@DbInject
注入数据库对象
@RedisInject
注入Redis对象
@PoolResource
注入连接池资源