经过几个月的开发调试和内部线上试用,终于在今天发布了 V2.1
版本,它并没有增加一些跨时代的功能,但却是为了 V3.0
版本的到来打好了基础。
本周主要 提升了部分组件的依赖版本,提升了最低 PHP 版本(>=7.3),并增加了对 Swow 驱动的适配。发布于 2.1.0 版。
如需更新到 v2.1.0
版本,只需要将 Hyperf
相关组件的依赖版本改为 2.1.*
即可,详情请见 更新指南。
警告:所有的代码变动已在更新内容中注明,除了根据更新指南更新外,仍需仔细阅读
更新内容
,以免出现遗漏
直接访问 官网 hyperf.io 或 文档 hyperf.wiki 查看更新内容
php
版本到 >=7.3
。phpunit/phpunit
版本到 ^9.0
。guzzlehttp/guzzle
版本到 ^6.0|^7.0
。vlucas/phpdotenv
版本到 ^5.0
。endclothing/prometheus_client_php
版本到 ^1.0
。twig/twig
版本到 ^3.0
。jcchavezs/zipkin-opentracing
版本到 ^0.2.0
。doctrine/dbal
版本到 ^3.0
。league/flysystem
版本到 ^1.0|^2.0
。Hyperf\Amqp\Builder
已弃用的成员变量 $name
。Hyperf\Amqp\Message\ConsumerMessageInterface
已弃用的方法 consume()
。Hyperf\AsyncQueue\Driver\Driver
已弃用的成员变量 $running
。Hyperf\HttpServer\CoreMiddleware
已弃用的方法 parseParameters()
。Hyperf\Utils\Coordinator\Constants
已弃用的常量 ON_WORKER_START
和 ON_WORKER_EXIT
。Hyperf\Utils\Coordinator
已弃用的方法 get()
。rate-limit.php
, 请使用 rate_limit.php
。Hyperf\Resource\Response\ResponseEmitter
。hyperf/paginator
从 hyperf/database
依赖中移除。Hyperf\Utils\Coroutine\Concurrent
中的方法 stats()
。方法 Hyperf\Utils\Coroutine::parentId
返回父协程的协程 ID
RunningInNonCoroutineException
异常。CoroutineDestroyedException
异常。类 Hyperf\Guzzle\CoroutineHandler
execute()
方法。initHeaders()
将会返回初始化好的 Header 列表, 而不是直接将 $headers
赋值到客户端中。checkStatusCode()
方法。#2720 不再在方法 PDOStatement::bindValue()
中设置 data_type
,已避免字符串索引中使用整形时,导致索引无法被命中的问题。
#2871 从 StreamInterface
中获取数据时,使用 (string) $body
而不是 $body->getContents()
,因为方法 getContents()
只会返回剩余的数据,而非全部数据。
#2909 允许设置重复的中间件。
#2935 修改了 Exception Formatter
的默认规则。
#2979 命令行 gen:model
不再自动将 decimal
格式转化为 float
。
Hyperf\AsyncQueue\Signal\DriverStopHandler
将会在 v2.2
版本中弃用, 请使用 Hyperf\Process\Handler\ProcessStopHandler
代替。Hyperf\Server\SwooleEvent
将会在 v3.0
版本中弃用, 请使用 Hyperf\Server\Event
代替。Hyperf\AsyncQueue\Listener\QueueHandleListener
,用来记录异步队列的运行日志。Hyperf\Utils\Waiter
,可以用来等待一个协程结束。Hyperf\Database\Model\Collection::columns()
,类似于 array_column
。Json::decode
和 Json::encode
新增参数 $depth
和 $flags
。Swow
驱动下使用的问题。prometheus
,使其支持 https
和 http
协议。Hyperf 是基于 Swoole 4.5+
实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM
的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换
与 可复用
的。
框架组件库除了常见的协程版的 MySQL 客户端
、Redis 客户端
,还为您准备了协程版的 Eloquent ORM
、WebSocket 服务端及客户端
、JSON RPC 服务端及客户端
、GRPC 服务端及客户端
、OpenTracing(Zipkin, Jaeger) 客户端
、Guzzle HTTP 客户端
、Elasticsearch 客户端
、Consul 、Nacos 服务中心
、ETCD 客户端
、AMQP 组件
、Nats 组件
、Apollo 、ETCD 、Zookeeper 、Nacos 和阿里云 ACM 的配置中心
、基于令牌桶算法的限流器
、通用连接池
、熔断器
、Swagger 文档生成
、Swoole Tracker
、Blade 、Smarty 、Twig 、Plates 和 ThinkTemplate 视图引擎
、Snowflake 全局 ID 生成器
、Prometheus 服务监控
等组件,省去了自己实现对应协程版本的麻烦。
Hyperf 还提供了 基于 PSR-11 的依赖注入容器
、注解
、AOP 面向切面编程
、基于 PSR-15 的中间件
、自定义进程
、基于 PSR-14 的事件管理器
、Redis/RabbitMQ 消息队列
、自动模型缓存
、基于 PSR-16 的缓存
、Crontab 秒级定时任务
、Session
、i18n 国际化
、Validation 表单验证
等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。
尽管现在基于 PHP 语言开发的框架处于一个百花争鸣的时代,但仍旧未能看到一个优雅的设计与超高性能的共存的完美框架,亦没有看到一个真正为 PHP 微服务铺路的框架,此为 Hyperf 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。
Hyperspeed + Flexibility = Hyperf
,从名字上我们就将 超高速
和 灵活性
作为 Hyperf 的基因。
基于以上的特点,Hyperf 将存在丰富的可能性,如实现 单体 Web 服务,API 服务,网关服务,分布式中间件,微服务架构,游戏服务器,物联网( IOT )等。
我们投入了大量的时间用于文档的建设以提供高质量的文档体验,以解决各种因为文档缺失所带来的问题,文档上也提供了大量的示例,对新手同样友好。
Hyperf 官方开发文档
我们为组件进行了大量的单元测试以保证逻辑的正确,目前存在 1660
个单测共 5116
个断言条件,Hyperf 是一款经历过严酷的生产环境考验的一个项目,目前已有很多的大型互联网企业都已将 Hyperf 部署到了自己的生产环境上并稳定运行。
Github 👈👈👈👈👈 点 Star 支持我们
Gitee 码云 👈👈👈👈👈 点 Star 支持我们
Hyperf 官网
Hyperf 文档
Hyperf 交流群(已满): 862099724
Hyperf 交流 2 群: 811414891
钉钉群 一群(已满): 34538367
钉钉群 二群: 34488757
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.