🚀 Hyperf v1.0 发布,全新企业级的 PHP 协程微服务框架

109

Hyperf

Hyperf 是基于 Swoole 4.3+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换可复用 的。

框架组件库除了常见的协程版的 MySQL 客户端Redis 客户端,还为您准备了协程版的 Eloquent ORMJSON RPC 服务的及客户端GRPC 服务端及客户端Zipkin (OpenTracing) 客户端Guzzle HTTP 客户端Elasticsearch 客户端Consul 客户端ETCD 客户端AMQP 组件Apollo 配置中心阿里云 ACM 应用配置管理基于令牌桶算法的限流器通用连接池熔断器Swagger 文档生成 等组件,省去了自己实现对应协程版本的麻烦,Hyperf 还提供了 基于 PSR-11 的依赖注入容器注解AOP 面向切面编程基于 PSR-15 的中间件自定义进程基于 PSR-14 的事件管理器Redis/RabbitMQ 消息队列自动模型缓存基于 PSR-16 的缓存 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。

框架初衷

尽管现在基于 PHP 语言开发的框架处于一个百花争鸣的时代,但仍旧未能看到一个优雅的设计与超高性能的共存的完美框架,亦没有看到一个真正为 PHP 微服务铺路的框架,此为 Hyperf 及其团队成员的初衷,我们将持续投入并为此付出努力,也欢迎你加入我们参与开源建设。

设计理念

Hyperspeed + Flexibility = Hyperf,从名字上我们就将 超高速灵活性 作为 Hyperf 的基因。

  • 对于超高速,我们基于 Swoole 协程并在框架设计上进行大量的优化以确保超高性能的输出。
  • 对于灵活性,我们基于 Hyperf 强大的依赖注入组件,组件均基于 PSR 标准 的契约和由 Hyperf 定义的契约实现,达到框架内的绝大部分的组件或类都是可替换的。

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

文档齐全

我们投入了大量的时间用于文档的建设,以解决各种因为文档缺失所带来的问题,文档上也提供了大量的示例,对新手同样友好。

生产可用

我们为组件进行了大量的单元测试以保证逻辑的正确,同时维护了高质量的文档,在 Hyperf 正式对外开放(2019年6月20日)之前,便已在一家 C轮 和一家 B轮 互联网公司上线了多个服务并以稳定的姿态完美的运行了超过半年时间,经过了严酷的生产环境 (如618) 的考验,我们才正式的对外开放该项目。

官网及交流

Github <- 点 Star 支持我们
Hyperf 官网
QQ 群: 862099724


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

22 条评论
海诺 · 6月20日

不错 看看什么时候用上他

+1 回复

daydaygo · 6月20日

拥抱 PHP 微服务!

+1 回复

张军华 · 6月20日

好,太好了,看看什么时候用上

+1 回复

大黑 · 6月20日

先自己试验下,好用就推荐给同事~感谢

+1 回复

putyy · 6月20日

666

回复

探索者 · 6月20日

Swoole 4.3 发布貌似还么有半年

回复

0

并没有说一开始就要求 4.3,是后来才强制要求 4.3 的,主要是为了避免一些 4.3 以下的 Bug

huangzhhui 作者 · 6月20日
shuidaosoft · 6月21日

启动服务报错:
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#php bin/hyperf.php start
Scanning ...
Scan completed.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfJsonRpcListenerRegisterProtocolListener listener.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfConfigListenerRegisterPropertyHandlerListener listener.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfPaginatorListenerPageResolverListener listener.
ERROR Swoole short name have to disable before start server, please set swoole.use_shortname = 'Off' into your php.ini.

===============================
经过查看我的配置,没有问题:
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#php --ri swoole

swoole

Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 4.3.2
Built => Jun 20 2019 23:32:57
coroutine => enabled
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
http2 => enabled
pcre => enabled
zlib => enabled
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled

Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.display_errors => On => On
swoole.use_shortname => Off => Off
swoole.unixsock_buffer_size => 8388608 => 8388608
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#php bin/hyperf.php start

回复

0

swoole.use_shortname = 'Off' 引号不能省略

Zc__ · 7月22日
shuidaosoft · 6月21日

这评论竟然不能截图,有点失望。
我的swoole版本4.3.2 ,php版本7.3.5
目前就是无法启动hyperf项目

回复

shuidaosoft · 6月21日

[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#php bin/hyperf.php start
Scanning ...
Scan completed.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfJsonRpcListenerRegisterProtocolListener listener.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfConfigListenerRegisterPropertyHandlerListener listener.
[DEBUG] Event HyperfFrameworkEventBootApplication handled by HyperfPaginatorListenerPageResolverListener listener.
ERROR Swoole short name have to disable before start server, please set swoole.use_shortname = 'Off' into your php.ini.
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#
[root@instance-duod2ynq /home/wwwroot/www.hyperf.com/backend]#php --ri swoole

swoole

Swoole => enabled
Author => Swoole Team <team@swoole.com>
Version => 4.3.2
Built => Jun 20 2019 23:32:57
coroutine => enabled
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
http2 => enabled
pcre => enabled
zlib => enabled
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
async_redis => enabled

Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.display_errors => On => On
swoole.use_shortname => Off => Off
swoole.unixsock_buffer_size => 8388608 => 8388608

回复

0

问题最好到 issue 里讨论,这里不好展开探讨和追踪

huangzhhui 作者 · 6月21日
0

@huangzhhui

//  vendor\hyperf\server\src\Command\StartServer.php
 private function checkEnvironment(OutputInterface $output)
    {
        if (ini_get_all('swoole')['swoole.use_shortname']['local_value'] !== 'Off') {
            $output->writeln('<error>ERROR</error> Swoole short name have to disable before start server, please set swoole.use_shortname = \'Off\' into your php.ini.');
            exit(0);
        }
    }

判断 use_shortname 用的 !==,省略引号,取到的是空所以必须在php.ini里加上引号

Zc__ · 7月22日
nick · 6月21日

这个算是Swoole官方框架吗?

回复

0

swoole官方只会专注于swoole-src核心源码维护,框架留给第三方

ixingjue · 6月21日
0

是的,Swoole 团队只会专注于 Swoole 核心,其它主要框架都属于 Swoole 中队成员作品

huangzhhui 作者 · 6月21日
pardon110 · 6月22日

改用golang吧

回复

2

舍近求远

huangzhhui 作者 · 6月22日
0

你用Go来写一个吧

phper08 · 6月25日
ixingjue · 6月26日

喷子滚开,去学java没人阻拦你

回复

甲骨文 · 7月9日

给楼主点赞,集成了常用的各种组件;
注解这种东西放PHP中,不是很鸡肋么?毕竟解释型的每次都要从头到尾的执行,这中间多一道工序个人觉的没必要,有router配置文件就可以了。

回复

0

并不会,启动的时候注解就扫描完了,对性能丝毫无影响

huangzhhui 作者 · 7月10日
载入中...