使用 Laravel Sail 和 Laravel Octane 开发高性能 PHP 项目

本文原创,转载请注明出处。

我写的其它关于 Laravel Sail 内容:使用 PHPStorm 来开发和 Debug Laravel Sail 项目

Laravel Sail 为我们提供了基于 Docker 的开发环境,Laravel Octane 可以显著提升我们的 Laravel 应用的性能,那我们应该如何使用 Laravel Sail 来开发我们的 Laravel Octane 应用呢?

Laravel Octane 通过使用高性能应用程序服务器为您的应用程序提供服务来增强您的应用程序的性能,包括 Open Swoole,Swoole,和 RoadRunner。Octane 启动您的应用程序一次,将其保存在内存中,然后以极快的速度向它提供请求。 —— Laravel 9 Octane 文档

Laravel Sail 是一个轻量级的命令行界面,用于与 Laravel 的默认 Docker 开发环境进行交互。Sail 为使用 PHP,MySQL 和 Redis 构建 Laravel 应用程序提供了一个很好的起点,而无需事先具有 Docker 经验。 —— Laravel 9 Octane 文档

本文假设本地已经拥有一个 Laravel Sail 项目且已经能够正常启动容器进行开发,将在此基础上为其安装 Laravel Octane 并使其能够在 Sail 容器中运行。

Laravel Octane 的安装

建立 sail 命令别名,将用 sail 来代替 vendor/bin/sail

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

启动 sail 容器

sail up -d

安装 Octane

sail composer require laravel/octane

由于 Sail 容器中默认安装 php-swoole 扩展,所以我们无需再手动为容器配置 PHP 扩展,直接执行 Octane 的安装指令即可:

sail php artisan octane:install

在安装的过程中,选择 swoole 安装方法

image-20220315000952661

开放容器端口

在项目根目录的 docker-compose.yml 文件中开放 8000 端口,如果你的项目根目录没有这个文件,则需要运行以下命令让 Sail 发布 Docker 文件

sail artisan sail:publish

docker-compose.yml 中开放 8000 端口

...
services:
    laravel.test:
        ...
        ports:
            - '${APP_PORT:-80}:80'
            # 此处添加 8000 端口
            - '8000:8000' 
        ...

安装 Chokidar

由于 Laravel Octane 启动后,应用将常驻内存,无法及时地根据文件的修改重新解释我们的应用,所以需要监听文件的修改,在代码变更时重新解释。

监听文件修改需要 Chokidar 文件监视库

sail npm install --save-dev chokidar

修改 Supervisord 指令

Sail 容器中是如何维持 PHP 进程的?

打开项目根目录下的 /docker/8.1/Dockerfile

若找不到文件请使用 sail artisan sail:publish 发布文件

docker 文件夹内有针对不同版本的 PHP 配置不同的容器,具体执行哪个版本是看 docker-compose.yml

...
services:
    laravel.test:
        build:
            context: ./docker/8.1 # 此处即为 Dockerfile 所在文件夹

在 Dockerfile 中可以看到如下的指令

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

Supervisord 是一款进程管理工具,主要功能是保护我们的进程,它将在后台启动我们需要的进程,并防止其被操作系统中断或者在中断后迅速重启。此处的 supervisord.conf 即为 Supervisord 的配置文件。根据指令,我们可以知道 Sail 是在 Docker 启动时将 Dockerfile 同目录下的 supervisord.conf 复制进容器中 Supervisord 应用的目录中。

在同目录下的 start-container 文件中我们也可以看到 sail 在启动容器时将执行以下 Supervisord 指令来根据配置文件启动我们的进程。

/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf

所以我们要修改的内容就在 supervisord.conf 中,打开文件,将

...
[program:php]
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80
...

修改为

...
[program:php]
command=/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=swoole --host=0.0.0.0 --port=8000 --watch
...

此处即为将原先的 php artisan serve 启动修改为 php artisan octane:start 启动,并指定服务器为 swoole 服务,在 8000 端口传输数据,并监听文件修改。

容器 reBuild

由于 supervisord.conf 是在容器 build 的阶段便进入容器了,所以修改 supervisord.conf 后需要重新 build 我们的容器,使用以下命令即可:

sail build --no-cache

Enjoy it~

启动容器后,查看 Octane 的运行状态

sail php artisan octane:status

在这里插入图片描述

使用浏览器访问 localhost:8000 即可看到我们应用的首页。

image-20220315083252779

尽情开发你的高性能 PHP 应用吧~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值