Hyperf的官方介绍:
Hyperf 是基于 Swoole 4.5+ 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。
Hyperf 是命令行Cli模式运行,PHP-FPM模式就是我们常用的模式,其中ThinkPHP,Laravle,Ci等框架都是此种模式,最新版的TP和Laravle也支持了Cli模式!
推荐:《PHP视频教程》
两种模式最大区别就是:
PHP-FPM是:每次响应请求,都要从入口文件开始初始化框架,经过路由转发到控制器执行得到结果并返回响应!
Cli是:启动框架之后,框架会常驻内存,启动一次他会注册服务到系统,监听我们的web端口(80或者9501等可以自定义端口),然后每次响应请求都不需要在加载框架的文件,直接路由识别到控制器给你执行逻辑代码返回结果!
所以Hyperf框架的性能是远高于TP等传统框架的。一个只需要加载一次,他就一直在楼下等你。一个是你每次找他,他每次加载一次从楼上下来见你。
Hyperf环境要求:
Hyperf仅可运行于 Linux 和 Mac 环境下,也就是说我们的Windos电脑不支持,但是在Windows下可以使用Docker for Windows 来作为运行环境。
运行环境的要求:
-
PHP >= 7.3
-
Swoole PHP 扩展 >= 4.5,并关闭了 Short Name
-
OpenSSL PHP 扩展
-
JSON PHP 扩展
-
PDO PHP 扩展 (如需要使用到 MySQL 客户端)
-
Redis PHP 扩展 (如需要使用到 Redis 客户端)
-
Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)
Hyperf的安装:
需要使用composer,如果您的composer是用的是国外镜像,那就非常慢,这里分享一个速度很快的镜像地址:
composer镜像地址
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer
Hyperf的安装composer命令
在安装过程中有一系列的询问,直接回车跳过即可,他都是问你是否安装各种组件,我们都可以跳过,以后需要用什么在根据文档的命令安装即可!
composer create-project hyperf/hyperf-skeleton
至此Hyperf框架就安装结束了,但是这里还有一个坑需要注意,必须关闭swoole的Short Name!
在extension = swoole.so下面加上swoole.use_shortname = off 即可,示例如下:
[swoole] extension = swoole.so swoole.use_shortname = off
启动项目:
启动项目需要在框架根目录中找到bin目录,里面有一个 hyperf.php 文件
在框架bin目录下执行命令:
php hyperf.php start
若在框架根目录就需要带bin路径:
php bin/hyperf.php start
由于 Hyperf 是持久化的 CLI 框架,当您修改完您的代码后,通过 CTRL + C 终止当前启动的进程实例,并重新执行 php bin/hyperf.php start 启动命令即可。
端口被占用怎么办?
若是启动过之后,后面在此启动发现端口被占用,那就查询一下端口进程id,杀死进程就可以再次启动!
netstat -tunlp | grep 9501
tcp 0 0 0.0.0.0:9501 0.0.0.0:* LISTEN 15893/skeleton.Mast
kill 15893
netstat -tunlp | grep 9501 是查询9501端口的进程
kill 15893 是杀死15893进程
框架启动之后测试访问:http://ip:端口
假设服务器Ip是:47.33.112.136
假设端口是:9501
那么访问地址就是:http://47.33.112.136:9501
到此,我们就把框架的安装,启动,访问完成了!
总结:
总的来说过程并不难,需要有一台学习的服务器,或者本身是mac电脑,亦或者windows电脑下搭建Docker环境。PHP的要求是大于7.3,建议大家使用PHP7.4吧,运行要求的扩展也都需要一并安装,最后就是要在php.ini中加上swoole.use_shortname = off,否则无法启动框架的!
以上就是Hyperf初学安装到启动并访问!的详细内容,更多请关注php中文网其它相关文章!
- 上一篇:PHP开发api接口
- 下一篇:五种PHP实现定时任务的方法