- 软件介绍
- 相关专题
- 下载地址
Hyperf简介
Hyperf是一个协同框架,可以帮助用户配置各种数据请求模式,让中间件读取数据更快,方便在不同设备上读取数据,提高数据处理效率,解决异步无阻塞系统的开发问题,帮助平台扩展数据访问线程,避免访客过多造成阻塞;有了这个软件,你可以快速创建新的协同学,配置协同学工作方案,搭建协同学环境,配置协同学运行控制方案,限制在Parallel中同时运行的协同学的最大数量,帮助用户更好地开发数据处理终端,快速配置数据读取线程,结合Hyperf提供的框架组件和其他组件设计新的服务系统!
Hyperf软件功能
Hyperf是基于Swoole 4.5+的高能灵活的PHP协同框架,内置协同学和大量常用组件。与传统的基于PHP-FPM的框架相比,它可以在保持极其灵活的可扩展性的同时提供超高的能量。标准组件都是基于PSR标准实现的,基于强依赖注入设计,保证了大多数组件或类是可替换、可重用的。
除了协同版常见的MySQL客户端和Redis客户端之外,还有enough ORM、WebSocket服务器和客户端、ON RPC服务器和客户端、GRPC服务器和客户端、Zipkin/Jaeger(开放追踪)客户端、Guzzle HTTP客户端、Elasticsearch客户端、Consul客户端、ETCD客户端、AMQP组件、Apollo配置中心、阿里巴巴云A应用配置管理、ETCD配置中心、基于令牌桶算法的限流器、通用连接池、fuse、Swagger文档生成、Swoole Tracker、视图引擎、雪花全局ID生成器等组件的协同版本,节省了
Hyperf还提供了基于PSR-11的依赖注入容器、注释、面向AOP方面的编程、基于PSR-15的中间件、定制流程、基于PSR-14的事件管理器、Redis/rabbtmq消息队列、自动模型缓存、基于PSR-16的缓存、Cntab二级计时任务、国际化和Validation表单验证器。
Hyperf软件特色
超速度+灵活性= Hyperf。从名字上看,我们把超速度和灵活性看作Hyperf的基因。
对于超高速,我们在基于Swoole协同学的框架设计上做了大量的优化,以保证超高的能量输出。
为了灵活性,我们基于Hyperf强大的依赖注入组件。组件是基于PSR标准的契约和Hyperf定义的契约实现的,因此框架中的大多数组件或类都是可替换的。
基于以上特性,Hyperf将会有丰富的可能性,比如Web服务、服务、分布式中间件、微服务架构、游戏、物联网(IOT)等的实现。
Hyperf教程
依赖自动注射
依赖自动注入是Hyperf提供的一个非常强大的功能,也是保持框架灵活的基础。
Hyperf提供了两种注入方法,一种是通过构造函数,另一种是通过@Inject标注。让我们举一个例子,用两种方式展示注入的实现。
假设我们有一个AppServiceUserService类,类中有一个getInfoById(int $id)方法,它传递一个Id,最后返回一个用户实体。因为这里的返回值不是我们需要关注的,所以就不做过多的阐述了。我们应该注意的是从任何类中获取UserService并调用里面的方法。一般的方法是通过新的UserService()实例化服务类,但是我们在Hyperf下有更好的解决方案。
通过构造函数注入,只需要在构造函数的参数中声明参数的类型,Hyperf就会自动注入对应的对象或值。
使用@Inject注释进行注入
只需用@var声明对应泛型的参数类型,并用@Inject注解标记泛型,Hyperf就会自动注入对应的对象或值。
使用Hyperf di annotation @ Inject;命名空间;
通过上面的例子,不难发现$userService是自动注入了相应的类对象而没有实例化的。
然而,这里的案例并没有真正反映自动依赖注入的好处和优势。我们假设UserService也有很多依赖项,当这些依赖项同时也有很多其他依赖项时,新的实例化方法需要手动实例化很多对象并调整相应的参数位,而在Hyperf中,我们不需要手动管理这些依赖项,只需要声明最终使用的类即可。
但是,当UserService需要进行诸如替换等剧烈的内部更改时,比如用RPC远程服务替换本地服务,只需要通过配置将依赖关系中UserService键值对应的类调整为新的RPC服务类即可。
开始Hyperf服务
因为Hyperf内置了协同学,这意味着Hyperf将以CLI的形式运行,所以在定义了路由和实际逻辑代码之后,我们需要通过命令行在项目根目录下运行php bin/hyperf.php start来启动服务。
当Console界面显示服务启动后,可以通过cL或浏览器正常访问服务。默认情况下,该服务将提供一个主页http://127.0.0.1:9501/。在本章示例指导的情况下,即上述示例对应的访问地址为http://127 . 0 . 0 . 1:9501/index/info?id=1 .
重新加载代码
由于Hyperf是一个持久化的CLI应用程序,这意味着一旦启动进程,解析后的PHP代码将在进程中持久化,这意味着您在启动服务后修改的PHP代码不会改变启动的服务。如果你想让服务重新加载你修改过的代码,你需要在启动的Console中键入CTRL+C来停止服务,然后重新执行启动命令php bin/hyperf.php start来完成启动和重新加载。
双端口监视器
/[/k0/因此,我们需要在依赖关系中重新定义服务器,以确保对象隔离。
像WebSocket和TCP这样的服务器都是一样的。
同时,路由文件或注释也需要指定相应的,如下所示:
路由文件config/utes.php
给…作注解
事件
除了上面提到的事件::ON_REQUEST之外,该框架还支持其他事件,所有事件的名称如下。
Hyperf常见问题
“注入”或“值”注释没有效果。
2.0在构造函数中使用了注入和值的函数。以下两种情况可能导致注射失败。请注意使用。
1.原类没有使用Inject或者Value,但是父类使用了Inject或者Value,原类写了一个构造函数,同时没有调用父类构造函数。
这将导致原始类不生成代理类,而是在实例化时调用自己的构造函数,因此不可能执行父类的构造函数。因此,父类代理类中的方法__handlePpertyHandler不会被执行,因此Inject或Value注释不会生效。
2.最初的类没有使用注入或值,但是注入或值在特性中使用。
这将导致原始类不生成代理类,因此无法在构造函数中执行__handlePpertyHandler,因此Trait的Inject或Value注释不会生效。
基于以上两种情况可以看出,原始类是否生成代理类是非常重要的,所以如果使用Trait和带有Inject或Value的父类,在原始类中添加一个Inject就可以解决以上两种情况。
异步队列消息丢失
如果您发现在使用异步队列组件时没有执行句柄中的方法,请执行以下操作:
1.Redis是不是和别人分享,新闻被别人消费?
2.本地流程中是否有被其他流程消耗掉的残渣?
提供了以下万无一失的解决方案:
1、killall php
2.修改异步队列配置通道
使用AMQP组件报告错误:必须在错误代码中调用API。
您可以在config/toload/amqp.php配置文件中将params.close _ on _ destroy更改为false。
使用Swole版和查看组件时,404会出现在访问界面中。
如果使用Swoole版本和视图组件的接口404有问题,可以尝试删除config/toload/中的static_handler_locations配置项。php文件。
这种配置下的路径将被视为静态文件路由,因此如果配置了/的话,所有接口都将被视为文件路径,从而产生接口404。
- 安卓合集
- 软件合集
- 浏览器
- 电脑管家
- 安卓游戏
软件排行榜
热门推荐
-
VMware InstallBuilder Enterprise破解版
v20.12.0 / 347 MB / 简体中文
-
Spark Studio官方版
v2.6.3 / 7.78 MB / 简体中文
-
Yearning SQL审核平台官方版
v2.3.2 / 10.2 MB / 简体中文
-
Protege官方版
v5.5 / 38.3 MB / 简体中文
-
HUAWEI LiteOS Studio官方版
v1.45.6 / 115 MB / 简体中文
-
Huawei LiteOS官方版
v5.0.0 / 87.6 MB / 简体中文
-
C语言代码实例助手官方版
v1.0 / 38.5 MB / 简体中文
-
idle python中文汉化版
v3.7 / 1.62 MB / 简体中文
-
Metabase官方版
v0.37.5 / 45.8 MB / 简体中文
-
编程猫硬件助手官方版
v1.4.1.0 / 39.3 MB / 简体中文
装机必备软件
-
word文档密码破解工具应用软件
-
冰点还原永久免费版系统软件
-
人生日历应用软件
-
一彩送货单管理系统应用软件
-
Process View系统软件
-
开心手机恢复大师其他类别
-
pdf文件阅读器应用软件
-
视频剪辑格式工厂应用软件
-
PhotoMetri应用软件
-
specinker应用软件
-
miwifi驱动驱动工具
-
海洋色音效助手影音软件
-
乐播投屏影音软件
-
seo外链助手网络软件
-
AES安全加密记事本安全相关





