Ladies and gentlemen Welcome to lvlv Small broken station
直接步入正题:
Hyperf 是一个高性能、高灵活性的渐进式 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于
PHP-FPM
的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是可替换
与可复用
的。在框架组件中除了常见的协程版的 Mysql 客户端,还为您准备了协程版的
Eloquent ORM
、WebSocket 服务端及客户端
、JSON RPC 服务端及客户端
、GRPC 服务端及客户端
、Zipkin/Jaeger (OpenTracing) 客户端
、Guzzle HTTP 客户端
、Elasticsearch 客户端
、Consul 客户端
、ETCD 客户端
、AMQP 组件
、Apollo 配置中心
、阿里云 ACM 应用配置管理
、ETCD 配置中心
、基于令牌桶算法的限流器
、通用连接池
、熔断器
、Swagger 文档生成
、Swoole Tracker
、视图引擎
、Snowflake 全局 ID 生成器
等组件,省去了自己实现对应协程版本的麻烦。(复制粘贴的)
说说他的学习难度吧,经过我的一番百度 ,网上说的都是说如果你对laravel框架特别熟悉的话。就可以把他拿捏死,就是手到擒来, So easy。所以我认为只要自己愿意下功夫,就一定可以学会!
说这么多,那我们每个人肯定就都会有疑惑:
1.swoole框架和php框架有什么相同点和不同点?
2.为什么要用swoole框架?
3.Hyperf好用吗?
分析这些问题时,得先讲—讲swoole是什么:
Swoole 使用 C/C++ 语言编写,提供了 PHP 语言的异步多线程服务器、异步 TCP/UDP 网络客户端、异步 MySQL、异步 Redis、数据库连接池、AsyncTask、消息队列、毫秒定时器、异步文件读写、异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
除了异步 IO 的支持之外,Swoole 为 PHP 多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大 简化多进程并发编程的工作。其中包括了并发原子计数器、并发 HashTable、Channel、Lock、进程间通信IPC 等丰富的功能特性。
Swoole4.0 支持了类似 Go 语言的协程,可以使用完全同步的代码实现异步程序,PHP 代码无需额外增加任何 关键词,底层自动进行协程调度,实现异步IO。以上来自swoole官网:上链接:Swoole - PHP 协程框架
简单理解:就是swoole不是框架,而是一个C/C++实现的一个异步引擎
接下来就到问题了:
1.swoole框架和php框架有什么相同点和不同点?
相同点:
1)都是php语言(解释型语言)开发,都需要php底层支撑
不同点:
1 )php运行依赖php-fpm与fastcgi(什么是 FastCGI与php-fpm_change_any_time的博客-CSDN博客_fastcgi与php-fpm)php 框架的请求处理都是以进程为单位来同步执行的,hyperf依赖swoole是有线程与协程的支撑,可以自动进行协程调度,实现异步
2)原生php对资源消耗较大,处理数据能力较弱, swoole 可以提高php的处理性能
3)hyperf依赖swoole库的支撑,才能运行起来,如果swoole不支持最新版本php(比如8.0)则框架也无法使用,原生php语言没有这种限制。
2.为什么要用swoole框架?
1)这里可以返回再次读一次什么是hyperf。
2)Yii或者Laravel也可以手动配置swoole,只不过操作过程会复杂化,并且涉及三方SDK时会有一些深坑。
3)集成swoole的框架就是为了简化配置,操作与流程。
3 hyperf简单好学好用吗?
世上无难事,只怕有心人
个人理解就是市场需要,在我本人在招聘网上看,很多招聘在介绍里都提到这个swoole,都是说会这个优先。但是我认为,自己应该是在保证自己已经学会的知识足够牢固,足够扎实,再去学习其他的,都不是大胃王,一口吃不成胖子。
好啦 光说不练假把式 直接开始安装吧。
Hyperf 对系统环境有一些要求,当您使用 Swoole 网络引擎驱动时,仅可运行于 Linux 和 Mac 环境下,但由于 Docker 虚拟化技术的发展,在 Windows 下也可以通过 Docker for Windows 来作为运行环境,通常来说 Mac 环境下,我们更推荐本地环境部署,以避免 Docker 共享磁盘缓慢导致 Hyperf 启动速度慢的问题。当您使用 Swow 网络引擎驱动时,则可在 Windows、Linux、Mac 下运行。
当您不想采用 Docker 来作为运行的环境基础时,您需要确保您的运行环境达到了以下的要求:
- PHP >= 7.4 and <= 8.0
- 以下任一网络引擎
- Swoole PHP 扩展 >= 4.5,并关闭了
Short Name
- Swow PHP 扩展 (Beta)
- Swoole PHP 扩展 >= 4.5,并关闭了
- JSON PHP 扩展
- Pcntl PHP 扩展
- OpenSSL PHP 扩展(如需要使用到 HTTPS)
- PDO PHP 扩展 (如需要使用到 MySQL 客户端)
- Redis PHP 扩展 (如需要使用到 Redis 客户端)
- Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)
安装 Hyperf
Hyperf 使用 Composer 来管理项目的依赖,在使用 Hyperf 之前,请确保你的运行环境已经安装好了 Composer。
通过 Composer 创建项目
我们已经为您准备好的一个骨架项目,内置了一些常用的组件及相关配置的文件及结构,是一个可以快速用于业务开发的 Web 项目基础,在安装时,您可根据您自身的需求,对组件依赖进行选择。
执行下面的命令可以于当前所在位置创建一个 skeleton 项目
基于 Swoole 驱动:
composer create-project hyperf/hyperf-skeleton
基于 Swow 驱动:
composer create-project hyperf/swow-skeleton
还有docker的话 直接上链接吧:
- 创建项目
cd /data/project
composer create-project hyperf/hyperf-skeleton
- 启动项目
cd hyperf-skeleton
php bin/hyperf.php start
接下来如果你的环境没有问题的话,会遇到一个没有关闭了 Short Name
如果需要swoole关闭shortname,在php.ini中添加swoole.use_shortname = off 重启php
然后重启php,再次开启一遍,如果还是报那个没有关闭shortname 这时候去到你使用的php版本的与php.ini同级下的目录
然后进入到php-cli.ini中与在php.ini一样添加swoole.use_shortname = off 后重启php
然后就好了 就直接域名加上9501就可以直接访问了。
官网教程:Hyperf
但是在使用的时候会遇到俩个问题,
一个就是在自己直接关闭那个页面没有Ctrl+c结束进程,当你下次进来,再次开启就会报错。
还有一个就是你每次修改代码后
都需要去重启一次 才会生效。这俩个问题就留到下篇文章啦。
这次就先这样了 以上大部分仅个人见解。
goodbye!!!