系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

Hyperf(企业级协程框架)

v2.1.10 官方版

Hyperf(企业级协程框架)

  • 软件大小:9.41 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2021-09-03 02:41
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

Hyperf是一个协同框架,可以帮助用户配置各种数据请求模式,让中间件读取数据更快,方便在不同设备上读取数据,提高数据处理效率,解决异步无阻塞系统的开发问题,帮助平台扩展数据访问线程,避免过多访客造成服务器阻塞;有了这个软件,你可以快速创建新的协同,配置协同工作计划,构建协同环境,配置协同运行控制计划,并在Parallel中限制并发协同流程的最大数量,从而帮助用户更好地开发数据处理终端,快速配置数据读取线程,并结合框架组件和Hyperf!

软件功能

Hyperf是一个基于swole 4.5+的高性能、高灵活性的PHP协作框架,内置协作服务器和大量常用组件。与基于PHP-FPM的传统框架相比,Hyperf在性能上有了质的提升,在提供超高性能的同时保持了极其灵活的可扩展性。标准组件都是基于PSR标准实现的,并且是基于强依赖注入设计的,因此确保了大多数组件或类是可替换和可重用的。

除了协作版常见的MySQL客户端和Redis客户端,我还准备了协作版的雄辩ORM、WebSocket服务器和客户端、JSON RPC服务器和客户端、GRPC服务器和客户端、Zipkin/Jaeger (OpenTracing)客户端、Guzzle HTTP客户端、Elasticsearch客户端、Consul客户端、ETCD客户端、AMQP组件、Apollo配置中心、阿里巴巴云ACM应用配置管理、ETCD配置中心、基于令牌桶算法的限流器、通用连接池、fuse、Swagger文档生成、Swoole Tracker、视图引擎、雪花全局ID生成器等组件

Hyperf还提供了基于PSR-11的依赖注入容器、注释、面向AOP方面的编程、基于PSR-15的中间件、定制流程、基于PSR-14的事件管理器、Redis/rabbtmq消息队列、自动模型缓存、基于PSR-16的缓存、Crontab二级定时任务、国际化、Validation表单验证器等。

软件特色

hyperspeed+flexibility =Hyperf,从名字上看,我们把超级速度和灵活性作为Hyperf。

对于超高速,基于Swoole协同学,我们在帧设计上做了大量优化,保证超高性能输出。

为了灵活性,我们基于Hyperf注入组件,组件基于PSR标准的契约和Hyperf定义的契约实现,这样框架内的大多数组件或类都是可替换的。

基于以上特点,Hyperf将拥有丰富的可能性,如实现Web服务、网关服务、分布式中间件、微服务架构、游戏服务器、物联网(IOT)等。

官方教程

依赖自动注入

依赖自动注入是Hyperf提供的一个非常强大的功能,也是保持框架灵活的基础。

Hyperf提供了两种注入方法,一种是通过构造函数的普通注入,另一种是通过@Inject注释的注入。我们举个例子,分别用两种方式展示注入的实现。

假设我们有一个AppServiceUserService类,该类中有一个getInfoById(int $Id)方法,该方法传递一个id并最终返回一个用户实体。既然这里的返回值不是我们需要关注的,我们就不做过多的阐述了。我们应该注意从任何类获取UserService并调用它的方法。一般的方法是通过new UserService()实例化服务类,但是在Hyperf,我们有更好的解决方案。

通过构造函数注入只需要在构造函数的参数中声明参数的类型,Hyperf会自动注入对应的对象或值。

使用@Inject注释进行注入。

只需用@var为相应的类属性声明参数的类型,并用@Inject注释标记该属性。Hyperf将自动注入相应的对象或值。

使用@Inject注释时,请使用Hyperfdianotationinject;命名空间;

通过上面的例子,我们可以很容易地发现,对应于该属性的类对象是自动注入的,而没有实例化$userService。

然而,这里的案例并没有真正展示依赖自动注射的好处和优势。我们假设UserService也有很多依赖关系,这些依赖关系同时也有很多其他的依赖关系,实例化new的方式需要手动实例化很多对象并调整相应的参数位。但是,在Hyperf,我们不需要手动管理这些依赖关系,只需要声明最终使用的类。

当需要替换UserService以及其他剧烈的内部变化时,比如用RPC远程服务替换本地服务,只需要将调整依赖关系中UserService键值对应的类配置为新的RPC服务类即可。

启动Hyperf服务。

As Hyperf有内置的协同服务器,这意味着Hyperf将以CLI的形式运行,所以在定义了路由和实际的逻辑代码之后,我们需要在项目的根处运行php bin/hyperf.php start,并通过命令行启动服务。

当Console界面显示服务启动后可以通过cURL或浏览器正常访问时,默认服务会提供一个主页http://127.0.0.1:9501/。在本章示例引导的情况下,上述示例对应的访问地址为http://127 . 0 . 0 . 1:9501/index/info?id=1 .

重新加载代码。

由于Hyperf是一个持久化的CLI应用程序,这意味着一旦进程启动,解析后的PHP代码将在进程中持久化,这意味着您在启动服务后修改的PHP代码不会改变启动的服务。如果你想让服务重新加载你修改过的代码,你需要通过在启动的Console中键入CTRL+C来终止服务,然后重新执行start命令php bin/hyperf.php start来完成启动和重新加载。

双端口监视器

Hyperf支持监听多个端口,但由于回调中的对象是直接从容器中获取的,因此容器中相同的Hyperfhttpserverserver::类将被覆盖。因此,我们需要在依赖关系中重新定义服务器,以确保对象隔离。

像WebSocket和TCP这样的服务器都是一样的。

同时,路由文件或注释还需要指定相应的服务器,如下所示:

路由文件config/routes.php

给…作注解

事件

除了上面提到的事件::ON_REQUEST之外,该框架还支持其他事件,所有事件的名称如下。

常见问题

Inject 或 Value 注解不生效

2.0使用将注入和值注入构造函数的功能。以下两种情况可能导致无效注射,请注意。

1.原始类不使用Inject或Value,但是父类使用Inject或Value,并且原始类已经编写了构造函数,而父类的构造函数没有被调用。

这将导致原始类不生成代理类,而是在实例化时调用自己的构造函数,因此不可能执行父类的构造函数。因此,父类的代理类中的方法_ _ handlePropertyHandler将不会被执行,注入或值注释也不会生效。

2.原始类不使用注入或值,但在Trait中使用注入或值。

因此,原始类不会生成代理类,因此不可能在构造函数中执行_ _ handlePropertyHandler,因此Trait的Inject或Value注释不会生效。

基于以上两种情况可以看出,原类是否生成代理类是非常重要的。因此,如果将Trait和父类与Inject或Value一起使用,可以通过在原始类中添加Inject来解决上述两种情况。

异步队列消息丢失。

使用异步队列组件时,如果发现句柄中的方法没有执行,请先检查以下情况:

1.Redis是不是和别人分享,新闻被别人消费了?

2.本地流程中是否有被其他流程消耗掉的残渣?

下面提供了一个简单的解决方案:

1、killall php

2.修改异步队列配置通道。

使用AMQP组件报告swooleerror:必须在coroutine错误中调用API。

您可以在config/autoload/amqp.php配置文件中将params.close _ on _ destroy更改为false。

当使用SWOOLE版本和视图组件时,提供程序出现404。

使用swole版并查看组件。如果接口404有问题,可以尝试删除config/autoload/server.php文件中的static_handler_locations配置项。

这种配置下的路径将被视为静态文件路由,因此如果配置了/的话,所有接口都将被视为文件路径,从而产生接口404。

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件