分享好友 最新动态首页 最新动态分类 切换频道
hyperf的使用和理解
2024-12-26 08:37

Hyperf 是 PHP 领域中少有的原生支持协程的框架,基于 Swoole 扩展。Swoole 是一个为 PHP 提供异步、协程支持的底层库,Hyperf 利用它实现了 PHP 原生无法实现的异步 IO、多任务处理以及高并发能力。Hyperf 引入了许多现代开发框架的特性,如依赖注入(DI)、中间件、AOP(面向切面编程)等,使得开发者可以以更清晰、可维护的方式进行开发,如果写过Java的伙伴会发现有很多 Spring 的影子。Hyperf 提供了自动生成代码、依赖注入、路由自动注册等工具,减少了重复的手动操作,提升了开发效率。

hyperf的使用和理解

Hyperf 放弃了传统的 FastCGI 模式,采用 Swoole 来重写 PHP 的服务。这是 Hyperf 高性能的核心原因之一。传统的 PHP 应用通常通过 FastCGI 或 FPM(FastCGI Process Manager)与 Web 服务器(如 Nginx、Apache)交互,而 Hyperf 则通过 Swoole 提供的底层功能实现常驻内存的方式运行,从而大幅提升了性能。传统 PHP 是串行化执行的,每个请求在单独的进程中处理,无法利用多核 CPU 进行并发计算,Swoole 为 PHP 提供了并发执行的能力,并且通过多进程利用多核 CPU。可以说swoole是划时代的产品,而同一家公司出品的框架hyperf是php为php开创了一个新的时代,给php提供了更多的可能。

  • Swoole 协程的性能依赖于 Swoole 扩展的实现,通过异步 I/O 和用户态的调度机制实现协程。PHP 本身是单线程阻塞的语言,而 Swoole 协程允许异步执行多个任务,从而在并发处理上大大提升了性能。

  • Swoole 的协程相对较轻量,单个 PHP 进程可以运行成千上万个协程。不过,由于底层语言(PHP)的限制,PHP 的协程调度在效率和资源占用上相比 Go 还是有所差距。

特点

Swoole 协程模型

Go GMP 模型

并发执行单元

协程(Coroutine),由 Swoole 调度

Goroutine,由 Go 运行时自动调度

调度器

用户态调度器,由 Swoole 提供

Go 运行时自带 GMP 调度器,自动分配 Goroutines

事件模型

基于事件循环,类似于 Node.js 的事件驱动

GMP 模型直接在内存中调度,不依赖事件循环

轻量级

协程非常轻量,性能较好

Goroutine 非常轻量,性能极佳

上下文切换

用户态的协程切换,成本低

用户态 Goroutine 切换,成本低

多线程支持

通过协程池支持并发任务,可以手动配置线程数

Goroutine 通过 M 绑定操作系统线程自动调度

自动负载均衡

没有 Go 那样的自动负载均衡

GMP 模型自动调度 Goroutine,支持负载均衡

应用场景

适合高并发 I/O 密集型任务(WebSocket、HTTP)

适合大规模并发任务,支持 CPU 密集和 I/O 密集型

总的来说,Swoole 的协程模型 为 PHP 提供了强大的并发能力,并且在高并发 I/O 场景中表现优异,但 Go 的 GMP 模型 更加轻量、高效,特别是在处理大规模并发任务时表现更为出色。

本文尽量不赘述或者照搬文档内容,只希望对文档内容进行一些提炼或者没提到的内容进行一些补充。文档地址跳转

hyperf提供了docker镜像的环境,无需自行搭建环境还比较方便,强烈建议使用这种方式进行开发,如果需要宿主机自行安装可以去文档查看环境要求。以下是docker方式

phpstorm中通过镜像启动

process多次执行

hyperf提供autoload和注释注册多种方式,我使用的2.2的hyperf版本生成的时候已经自动添加了注释进行注册了,所以如果是手动创建的可以选择autoload或者注释注册,通过命令gen生成的文件无需再通过autoload进行注册,否则会出现多次注册的问题。例如process就是多次运行。

文档搜索不到

如果使用的版本文档中没有写某个功能的使用说明,可以向下搜索,例如2.2可以去看一下2.0的文档。

gen命令丢失

上述指令list可以列出所有指令,但是我创建一个监听文件一个,不确定是不是我的文件中有语法错误或者没有完成,倒是我的list列出的gen指令只有三个,且其他指令也无法使用,报错如下:

Command "gen:process" is not defined.

Did you mean one of these?

gen:migration

gen:model

gen:seeder

解决方案是删除那个监听文件即可。

定时任务注册

在使用定时任务组件之前,需要先在 内注册一下 这里并不是让你使用gen:process去生成,只要成功导入,就按照要求去配置即可。当然如果有重载这个类的需求可以选择生成。

直接去文档看例子

依赖注入提供了非常方便和简单的调用方式,通过di组件自动的帮我们完成类的引入调用,提高了开发生产效率。建议通过注解方式,更简单更快速。

  1. Job(任务)

    • 主动触发: 更适合用于主动触发的异步任务。通常用于处理耗时操作,避免在请求过程中阻塞响应。例如,发送邮件、处理队列、生成报告等。

    • 使用场景

      • 异步处理复杂的逻辑任务。

      • 高并发下延迟执行任务,减轻主线程负担。

  2. Listener(事件监听器)

    • 被动触发: 适用于响应某些事件的异步任务。当某个特定事件被触发时, 会自动响应并执行相关逻辑。事件监听器往往用于解耦代码,通过事件驱动的方式执行任务。

    • 使用场景

      • 监听用户注册事件并发送欢迎邮件。

      • 在某个数据操作完成后自动执行相关后续操作(如清理缓存、发送通知等)。

  3. Process(进程)

    • 常驻进程: 适用于需要长时间运行的任务或守护进程。它通常用于持续监听某些资源或状态,处理常驻任务,类似于守护进程(Daemon)。

    • 使用场景

      • 持续监听队列、Socket、或者文件系统。

      • 处理长时间运行的任务(如 WebSocket 服务器、Crontab 分发器、任务调度器等)。

最新文章
苏州SEM外包服务助您拓展市场
苏州SEM外包服务助您拓展市场在如今竞争激烈的市场环境中,企业要想脱颖而出,拓展市场,借助互联网的力量至关重要。苏州SEM外包服务能够帮助企业通过精准的搜索引擎营销策略,迅速提高品牌曝光度,吸引潜在客户,提升转化率。本文将详细介
高清美女写真生成 - 一键体验AI创作的魅力
在这个数码科技飞速发展的时代,AI技术正在以惊人的速度改变我们的生活方式。想象一下,随便给出几句话或者图片描述,AI就能为你生成一张栩栩如生的美女写真。这听起来是不是像梦一样神奇?今天,我们就来深入探索目前市面上最热门的AI美女
蔡甸SEO优化,性价比与服务专业度兼顾的收费标准揭秘
蔡甸SEO优化收费标准全面解析,涵盖关键词优化、内容营销等策略。注重性价比与专业服务相结合,助力企业提升网络竞争力,实现高效推广。随着互联网的普及和电子商务的快速发展,越来越多的企业和个人开始重视网络营销,SEO(搜索引擎优化)
Ubuntu 上安装的 Kasm Workspace
一、引言Kasm Workspace 作为一款强大的开源容器流平台。它能够将、Web 隔离以及 OSINT 工作负载直接交付到用户的 Web 浏览器中,使用起来极为便捷。本文主要介绍如何在腾讯云的轻量云服务器闪安装并且使用kasm workspace系统要求通常来说
老房翻新改造水电部分要有哪些细节要注意?
  老房子使用的时间久了之后,自然而然会需要对一些部分进行改造,而水电便是其中之一。在对水电进行改造时,有必要注意相应的注意事项。到底,老房翻新改造水电部分要有哪些细节要注意?这是不少的业主一直以来关注的问题,在此爱空间便
科学访问chatgpt
科学访问ChatGPT:一次人工智能之旅人工智能的快速发展不仅在技术领域引起了轰动,也在各个行业产生了巨大的影响。作为人工智能的重要组成部分,语言模型ChatGPT以其强大的自然语言处理能力在科学界引起了广泛关注。为了更深入了解ChatGPT
搜狗推广顾问给我做了一份新账户优化思路,来看看~~
云衔科技是一家专注于数字化营销解决方案和SaaS软件服务的领先企业。公司凭借深厚的行业经验和专业技术能力,致力于为企业客户提供全方位、高效的数字广告代理与运营服务,以及定制化的SaaS软件解决方案。一、优化目的:多卖产品(蚊帐),
网络宣传新指南:如何让你的作品被广泛传播
媒体宣传发稿 宣传文章网络发布实战宝典:让你的作品在网络中赢得更多曝光?媒体宣传发稿与宣传文章的网络发布是品牌推广和营销中的重要环节。(媒介星软文平台)表示以下是一份实战宝典,旨在帮助你的作品在网络中赢得更多曝光。一、明确宣传目
广告联盟对接短剧源码系统开发介绍
广告联盟对接短剧源码系统开发介绍撸包小游戏怎么变现,如何选择合适的广告模式以及平台,广告联盟小游戏APP开发哪种类型更容易推广?一、了解撸包小游戏的市场走位撸包小游戏通常指的是那些以快速获得奖励或礼包为噱头的休闲游戏。这类游
【A9188应用宝下载】HTC A9188应用宝8.8.6免费下载
(Android)是腾讯应用中心倾力打造的手机应用商店,致力于为用户丰富、优质、个性化的安卓软件资源和一站式的下载管理体验,全方位覆盖用户的下载、管理、收藏、分享、等多样化需求应用宝2024更新内容1、修复了一些已知的bug应用宝6.7更新
相关文章
推荐文章
发表评论
0评