百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

高性能、高灵活性的 PHP 协程框架,Hyperf 安装实操

bigegpt 2024-10-12 06:02 10 浏览

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

目前协程的出现改变了很多PHP内容,各大框架也陆续结合协程实现了更丰富的内容。而且协程也衍生出很多优秀的框架。

~~出于学习的目的下面我将使用Hyperf创建一个自己的站点。~~


检查环境

Hyperf对环境有些要求。下面是官方给与的要求:

PHP >= 7.2

Swoole PHP 扩展 >= 4.5,并关闭了 Short Name

OpenSSL PHP 扩展

JSON PHP 扩展

PDO PHP 扩展 (如需要使用到 MySQL 客户端)

Redis PHP 扩展 (如需要使用到 Redis 客户端)

Protobuf PHP 扩展 (如需要使用到 gRPC 服务端或客户端)

首先在服务器查看自己的PHP版本

然后是 Swoole 扩展版本

php --ri swoole

JSON PHP 扩展 已经被内置到了PHP7.2中。不用再次安装。

Swoole PHP 扩展 >= 4.5,并关闭了 Short Name 这个要注意:需要手动在php.in中添加swoole.use_shortname = off 关闭 Short Name.

OpenSSL PHP 扩展需要开启。

执行命令

composer create-project hyperf/hyperf-skeleton

然后在服务器网站目录下执行命令。将进行hyperf安装。

当然我们希望安装是一番丰顺的,但是并不是所有的安装都会正常运行。例如我就遇到了比较奇怪的问题。

[root@ecs-c6s-large-2-linux-20200330161950 wwwroot]# composer create-project hyperf/hyperf
Creating a "hyperf/hyperf" project at "./hyperf"
Installing hyperf/hyperf (v2.0.25)
  - Installing hyperf/hyperf (v2.0.25): Extracting archive
Created project in /www/wwwroot/hyperf
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires PHP extension ext-redis * but it is missing from your system. Install or enable PHP's redis extension.
  Problem 2
    - league/flysystem[1.0.49, ..., 1.x-dev] require ext-fileinfo * -> it is missing from your system. Install or enable PHP's fileinfo extension.
    - xxtime/flysystem-aliyun-oss 1.5.0 requires league/flysystem ^1.0.49 -> satisfiable by league/flysystem[1.0.49, ..., 1.x-dev].
    - Root composer.json requires xxtime/flysystem-aliyun-oss ^1.5 -> satisfiable by xxtime/flysystem-aliyun-oss[1.5.0].

To enable extensions, verify that they are enabled in your .ini files:
    - /www/server/php/72/etc/php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

这里提示我需要开启PHP redis 扩展,和PHP fileinfo扩展。然而官网上说这个是非必须的。

解决问题

解决问题也比较简单。开启PHP redis 扩展,和PHP fileinfo扩展即可。我比较懒用的宝塔。宝塔开启PHP redis 扩展,和PHP fileinfo扩展 需要到宝塔PHP管理中的扩展管理开启相应内容即可。


这样我们就可以正常进行安装了。记得服务器可用内容要大于1g.不然PHP fileinfo扩展有可能安装不成功。


总结:

Hyperf 对环境要求还是有的。但是只要环境问题解决了。他的安装速度都是杠杠的。而且这点问题对应PHPer们就是张飞吃豆芽。小菜一碟。

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...