hyperf知识问题汇总

devtools/2025/2/12 13:02:26/
 1、简单说下 hyperf(什么是 hyperf)

答:hyperf 是一个依赖swoole扩展的 php 开源开发框架,它由黄朝辉团队设计创建维护,具备简洁而强大的组件和超强的并发性能,而且还支持微服务架构,例如:服务注册、RPC、配置中心、服务监控、分布式事务。

2、使用hyperf框架需要注意些什么问题。

答:不能使用全局变量,因为下划线 get、post、server、session、cookie,因为这些都是基于传统的 php-fpm 下的 cgi模式下运行的,是基于进程的生命周期的,而 hyperf 具备协程并发功能,所以 hyperf 的 request、session、cookie 这些组件就不能依据进程的生命周期去设计,所以不能使用还有通过容器获取的类都是单例的和避免在魔术方法中切换协程,还有避免在魔术方法中切换协程。

3、hyperf 的生命周期

i分为全局周期和请求周期还有协程的运行周期,全局周期是服务启动到结束的,请求周期是是一个用户请求到结束,协程周期基本都是异步的,在业务代码层进行控制。

4、 请简述一下hyperf的协程

“Hyperf 的协程是一种轻量级的线程,它不由 CPU 直接调度,而是由用户态的调度器进行调度。协程的调度有一定规则,并非完全无序,在单线程内代码依然是串行执行的。当协程遇到阻塞操作时,会自动切换到其他协程继续执行,这也是 Swoole 提供很多异步 MySQL、Redis 等组件的原因。在协程模式下,与请求相关的数据可以通过 Request 对象获取,要避免使用传统的全局变量来存储请求数据。”

5、defer、waitgroup、parallel 特性

Parallel 和 waitgroup都是为了使协程编程变得更加人性化设计的,主要用途是让主线程等待所有的子线程都执行完再往下继续运行。Parallel可以设置协程运行最大数,防止协程创建太多导致服务宕机。

use Hyperf\Coroutine\Exception\ParallelExecutionException;
use Hyperf\Coroutine\Coroutine;
use Hyperf\Coroutine\Parallel;$parallel = new Parallel(5);
for ($i = 0; $i < 20; $i++) {$parallel->add(function () {sleep(1);return Coroutine::id();});
} try{$results = $parallel->wait(); 
} catch(ParallelExecutionException $e){// $e->getResults() 获取协程中的返回值。// $e->getThrowables() 获取协程中出现的异常。
}
6、hyperf 的事件机制

hyperf 支持事件的监听和定义,使用event组件实现,由 事件、监听器、事件调度器三部分组成。

开发流程就是,编写一个 监听和调度类,然后配置一下,在listen监听方法中添加要监听的类。

7、hyperf 的 aop 面向切面编程

aop编程思想主要是为了提高业务代码的可重用性,是面向对象的一种延生,在 hyperf 中使用Aspect来实现,$classes是切入的类和方法可以使用通配符,$annotations 是配置了注解的类,process方法是执行的逻辑。

8、hyperf 的路由

主要分为两种方式一种是配置文件配置,一种是注解方式配置,推荐注解方式,方便阅读和管理。

9、hyperf 的中间件

属于http-server组件的一部分功能,主要分为全局中间件和局部中间件,定义的方式有配置文件、路由配置和注解配置,执行顺序为 全局-类-方法。

10、hyperf controller

在编程时候需要注意不要 将单个请求相关的数据储存在类属性内,这样会出问题的,数据会混淆,可以使用协程上下文(Context)去实现。

11、hyperf 模型

使用了hyperf/db-connection它是基于hyperf/pool实现的数据库连接池。


http://www.ppmy.cn/devtools/158210.html

相关文章

Git 安全与权限管理

引言 在当今软件开发的宏大版图中&#xff0c;Git 无疑占据着举足轻重的地位。作为一款分布式版本控制系统&#xff0c;Git 以其卓越的特性&#xff0c;为开发者们搭建了高效协作与代码管理的坚实桥梁。它赋予了开发者极大的自主性&#xff0c;即便在离线状态下&#xff0c;也…

grid网格布局中实现父盒子比较大,子元素顶部对齐

css布局中使用grid布局&#xff0c;父盒子的高度是1000px&#xff0c;每个子元素高度是100px&#xff0c;现在有三个子元素&#xff0c;如何实现每行显示两个&#xff0c;并且子元素都顶部对齐&#xff1f;如图所示的效果。 grid布局文档&#xff1a;grid - CSS&#xff1a;层…

IPD项目管理是什么?

IPD项目管理&#xff0c;即整合项目交付管理&#xff0c;是一种创新的管理方式、强调团队协作、优化设计和施工过程的方法。这种管理模式的核心是整合所有项目参与者的专业技能和知识&#xff0c;从项目初始阶段就开始共同合作&#xff0c;以实现项目目标。它特别强调所有参与者…

【JavaWeb10】服务器渲染技术 --- JSP

文章目录 &#x1f30d;一. JSP❄️1.JSP介绍❄️2.JSP 运行原理❄️3.page 指令(常用的)❄️ 4.JSP 三种常用脚本1.声明脚本2.表达式脚本3.代码脚本 ❄️5.JSP 内置对象❄️6.JSP 域对象 &#x1f30d;二. EL❄️1.EL 表达式介绍❄️2.EL 运算操作❄️3.EL 的 11 个隐含对象 &…

探索技术新边界:让 HTML 电子凭证与二维码、PDF 完美融合

朋友们&#xff01;在数字化浪潮滚滚向前的今天&#xff0c;电子凭证的应用越来越广泛。咱做开发的&#xff0c;经常会碰到这样的需求&#xff1a;要在 HTML 电子凭证模版的指定位置贴上二维码&#xff0c;然后把它生成 PDF 电子凭证文档。这事儿听起来复杂&#xff0c;但只要找…

CP AUTOSAR标准之HWTestManager(AUTOSAR_SWS_HWTestManager)(更新中……)

1 简介和功能概述 本规范描述了模块硬件测试管理启动和关闭(HTMSS)的概念、接口和配置。   HTMSS模块是AUTOSAR标准化基础软件架构服务层的基础软件模块,HTMSS模块应为应用程序SWC使用提供测试状态/结果。   该模块的目的是提供一个基础设施,用于在AUTOSAR标准软件平台内…

支持向量机(一)

支持向量机是典型的二分类模型&#xff0c;以其模型简单、实现简单、效果卓越而著称。 一元支持向量机 我们通过一条中间线根据特征对样本实现分类&#xff0c;很明显&#xff1a;两个支持样本的差别越大&#xff0c;两个支持样本的分类效果就越好。 二元支持向量机 在实际生…

Java Stream 全面解析

Java Stream 全面解析 Java 8 引入的 Stream API 提供了一种高效且声明式的方式来处理集合数据。Stream 允许你以函数式编程风格操作数据&#xff0c;支持并行处理&#xff0c;并且可以显著简化代码。下面我们将从 创建操作、中间操作 和 终端操作 三个方面进行全面深入的解析…