当前位置: 首页 > 后端技术 > PHP

Hyperf实战安装(连载)

时间:2023-03-30 04:54:20 PHP

转发自WhiteWolfStack:查看原文首先我本地环境是Mac+PHP7.4.21+SwooleVersion=>4.6.7+Composerversion2.4.4,作为学习,推荐大家选择官方的docker镜像。我们先在本地创建一个目录,它会直接映射到hyperf容器的/data/project目录下。~?cd/data/work/data/work?mkdirquestions_learn执行以下命令安装hyperf镜像,可能需要等待几分钟(如果本地没有该镜像)。dockerrun--namehyperf-php-8.0\-v/data/work/questions_learn:/data/project\-p9501:9501-it\--privileged-uroot\--entrypoint/bin/sh\hyperf/hyperf:8.0-alpine-v3.15-swoole这一步记得把-v后面的“/data/work/questions_learn”改成你本地的目录,其他保持不变。上面的安装命令执行成功后,我们就已经在hyperf容器中了。我们来看看hyperf容器中的环境。/#php-vPHP8.0.18(cli)(内置:2022年4月22日22:53:40)(NTS)版权所有(c)ThePHPGroupZendEnginev4.0.18,版权所有(c)ZendTechnologieswithZendOPcachev8.0.18,Copyright(c),byZendTechnologies/#php--riswooleSwoole=>enabledAuthor=>SwooleTeamVersion=>5.0.0Built=>Aug2202203:09:01coroutine=>enabledwithboostasmcontextepoll=>enabledeventfd=>enabledsignalfd=>enabledspinlock=>enabledrwlock=>enabledrwlock=>enabledopenssl=>OpenSSL1.1.1q2022年7月5日dtls=>enabledhttp2=>enabledjson=>enabledcurl-native=>enabledpcre=>enabledzlib=>1.2.12brotli=>E16777225/D16777225mutex_timedlock=>enabledpthread_barrier=>enabledasync_redis=>enabledDirective=>LocalValue=>MasterValueswoole.enable_coroutine=>On=>Onswoole.enable_library=>On=>Onswoole.enable_preemptive_scheduler=>Off=>Offswoole.display_errors=>On=>Onswoole.use_shortname=>Off=>Offswoole.unixsock_buffer_size=>8388608=>8388608/#composer-VComposer版本2.2.12021-12-2222:21:31/#composerconfig-gl[repositories.packagist.org.type]composer[repositories.packagist.org.url]https://repo.packagist.org......(其他代码省略)设置Composer镜像为阿里云镜像,国内加速下载Speedcomposerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/composer可以看到官方镜像默认支持很多扩展。如果您选择自己的本地环境,请至少保证您的运行环境满足以下要求:PHP>=8.0and<=8.1SwoolePHPextension>=4.5,andShortNameJSONPHPextensionPcntlPHPextensionenabledswoolecoroutine,openssl,curl-native,async_redis,rwlock,pcre,zlib,brotl另外,由于Hyperf基于Swoole协程实现,而Swoole4带来的协程功能在PHP中是前所未有的,所以与很多扩展仍然存在兼容性问题。以下扩展(包括但不限于)会造成一定的兼容性问题,无法兼容共享或共存:xhprofxdebugblackfiretraceuopz这些我们基本不需要。建议大家按照文中操作,选择官方镜像。我们继续在容器中操作。创建一个项目,命名为questions/#cd/data/project//data/project#composercreate-projecthyperf/hyperf-skeletonquestions在执行composercreate-project命令的时候,我们总会提示安装很多东西一开始。直接回车,后面我们需要手动安装。安装后安装的hyperf还是2.2版本。可以通过composerinfo命令查看已安装的hyperf的版本信息。/data/project/questions#作曲家信息|grephyperfhyperf/cachev2.2.33hyperf.hyperf/command的缓存组件v2.2.35hyperf/config的命令v2.2.33提供配置的独立组件container.hyperf/contextv2.2.33协程上下文library.hyperf/contractv2.2.33Hyperf.hyperf/databasev2.2.33灵活的数据库library.hyperf/db-connectionv2.2.33hyperf/database.hyperf/devtoolv2.2.33Hyperf.hyperf/di的开发工具的hyperfdb连接处理程序v2.2.33Hyperf.hyperf/dispatcher的DIv2.2.33Hyperf.hyperf/engine的HTTP服务器v1.3.4hyperf/eventv2.2.33实现PSR-14.hyperf/exception-handlerv2.2.33Exception的事件管理器onhandlerforhyperfhyperf/frameworkv2.2.33一个专注于超高速和灵活的协程框架,专门用于构建微服务和中间件。hyperf/guzzlev2.2.33Swoolecoroutinehandlerforguzzlehyperf/http-messagev2.2.33microserviceframeworkbasedonswoolehyperf/http-serverv2.2.33AHTTPServerforHyperf.hyperf/ide-helperv2.2.33IDEhelpfilesforHyperf.hyperf/loggerv2.2.33Aloggercomponentforhyperf.hyperf/macroablev2.2.33HyperfMacroable包fromilluminate/macroablehyperf/memoryv2.2.33用于操作和管理内存的独立组件。hyperf/model-listenerv2.2.33Hyperf.hyperf/poolv2.2.33的模型监听器独立的通用连接池组件.hyperf/processv2.2.33hyperf.hyperf/redis的进程组件v2.2.33hyperf.hyperf/server的redis组件v2.2.33Hyperf.hyperf/testing的基本服务器库v2.2.33hyperfhyperf/utils的测试v2.2.34工具可以帮助开发人员快速解决问题的软件包。这是因为3.0还没有正式发布。如果安装时发现已经是3.0的官方包,可以跳过后面的升级步骤,可以参考官方升级指南,或者按照当前教程继续。composerrequirehyperf/code-generatorphpbin/hyperf.phpcode:generate-Dapp直接修改composer.json中的hyperf/为3.0。然后执行composerupdate-o,现在我们看看hyperf相关的版本信息。/data/project/questions#作曲家信息|grephyperfhyperf/cachev3.0.0-rc.5hyperf.hyperf/code-generatorv0.3.3的缓存组件Hyperfhyperf/commandv3.0.0-rc.7的代码生成器hyperfhyperf/configv3.0.0-rc.8的命令提供配置的独立组件container.hyperf/contextv3.0.0-rc.1协程上下文library.hyperf/contractv3.0.0-rc.10Hyperf.hyperf/coordinatorv3.0.0-beta.1HyperfCoordinatorhyperf/databasev3.0.0-rc.10灵活的数据库library.hyperf/db-connectionv3.0.0-rc.4hyperf的hyperf数据库连接处理程序/database.hyperf/devtoolv3.0.0-rc.12Hyperf的开发工具.hyperf/div3.0.0-rc.12Hyperf.hyperf/dispatcherv3.0.0-rc.3的DIHyperf.hyperf/enginev1.3.4hyperf/eventv3.0.0-rc.12的HTTP服务器实现PSR-14.hyperf/exception-handlerv3.0.0-rc.9的事件管理器hyperfhyperf/frameworkv3的异常处理程序.0.0-rc.8一个专注于超高速和灵活的协程框架,专门用于构建微服务和中间件。hyperf/guzzlev3.0.0-rc.3guzzlehyperf/http-messagev3.0.0-rc.8的Swoolecoroutinehandler基于swoolehyperf/http-serverv3.0.0-rc.10的微服务框架AHTTPServerforHyperf.hyperf/ide-helperv3.0.0-rc.1Hyperf.hyperf/loggerv3.0.0-rc.3的IDE帮助文件来自illuminate/macroablehyperf/memoryv3.0.0-rc.1的hyperf.hyperf/macroablev3.0.0-rc.1HyperfMacroable包的记录器组件用于操作和管理内存的独立组件.hyperf/model-listenerv3.0.0-rc.1Hyperf.hyperf/poolv3.0.0-rc.3的模型监听器独立的通用连接池组件.hyperf/processv3.0.0-rc.3hyperf.hyperf/redisv3.0.0-rc.4的进程组件hyperf.hyperf/serverv3.0.0-rc.1的redis组件Hyperf.hyperf/testingv3的基本服务器库。0.0-rc.1测试hyperfhyperf/utilsv3.0.0-rc.10帮助开发者快速解决问题的工具包。部分组件的rc版本可能与文中不一致,注意3.0.*版本为Can启动项测试下是否安装成功/data/project/questions#phpbin/hyperf.phpstart[DEBUG]EventHyperf\Framework\Event\BootApplicationhandledbyHyperf\Config\Listener\RegisterPropertyHandlerListenerlistener.[DEBUG]EventHyperf\Framework\Event\BootApplication由Hyperf\ExceptionHandler\Listener\ExceptionHandlerListener侦听器处理。[DEBUG]事件Hyperf\Framework\Event\BootApplication由Hyperf\DbConnection\Listener\RegisterConnectionResolverListener侦听器处理。[DEBUG]事件Hyperf\Framework\Event\BeforeMainServerStart由处理Hyperf\Process\Listener\BootProcessListener侦听器。[DEBUG]Hyperf\Server\Listener\InitProcessTitleListener侦听器处理的事件Hyperf\Framework\Event\OnManagerStart。[DEBUG]Hyperf\Server\Listener\处理的事件Hyperf\Framework\Event\OnStartInitProcessTitleListenerlistener.[INFO]Worker#0started.[INFO]HTTPServerlisteningat0.0.0.0:9501[DEBUG]事件Hyperf\Framework\Event\AfterWorkerStart由Hyperf\Serve处理r\Listener\AfterWorkerStartListener侦听器。[DEBUG]Hyperf\Server\Listener\InitProcessTitleListener侦听器处理的事件Hyperf\Framework\Event\AfterWorkerStart。[信息]Worker#1已启动。[DEBUG]事件Hyperf\Framework\Event\AfterhanderHyperf\Server\Listener\AfterWorkerStartListener监听器。[DEBUG]事件Hyperf\Framework\Event\AfterWorkerStart由Hyperf\Server\Listener\InitProcessTitleListener监听器处理。这里需要注意的是,如果更改了框架中的任何代码,需要手动执行phpbin/hyperf.phpstart命令,在终端中按住Ctrl+C键可以停止已经启动的服务。我们先按照这个模式走,后面上线的时候是全自动的,不用担心。卡住的窗口表示安装成功。以上,我们都是在容器中执行的命令操作。(修改composer.json中的hyperf/为3.0,可以在宿主机上用ide编辑修改这个,编辑本地的/data/work/questions_learn/questions/composer.json文件)回到宿主机里面,请求测试本地端口9501./data/work?curl127.0.0.1:9501{"method":"GET","message":"HelloHyperf."}%至此,hyperf框架已经安装完成。教程中演示的所有代码都会上传到https://github.com/bailangzhan/questions_learn。如果您对安装有任何疑问,可以在文章下方或http://funqas.com/上留言。