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

Laravel常驻进程内存泄漏 背景 编写了一个常驻进程的脚本结果发现内存在不断上涨最后导致溢出,经过排查发现是日志的问题,之后做了一个测试如下: for ($i = 0; $i < 1000; $i++) { Log::info('[INFO]:' . $i); Log::error('[ERROR]:' . $i); Log::notice('[NOTICE]:' . $i); Log::debug('[DEBUG]:' . $i); if ($i%100==0) { var 阅读详情

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

我写的其它关于 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 应用吧~

Docker Compose 搭建 Laravel 开发环境:Nginx + MySQL 最佳实践 Docker Compose 是一种声明式容器编排工具,通过 YAML 文件定义多容器应用的服务依赖、网络与卷配置,实现开发环境的一致性与可复现性。其核心价值在于将运行时契约固化为版本可控的基础设施代码,显著降低团队协作中的环境差异成本。在 PHP Web 开发领域,尤其面向 Laravel 框架,结合 Nginx 作为反向代理与静态服务、MySQL 8.0 作为严格兼容的持久化引擎,构成高稳定、易调试、可审计的本地开发底座。该方案规避了 Laravel Sail 的黑盒封装局限,强调进程隔离、初始化可控与 阅读详情

相关推荐

Laravel与Spring Boot开发效率对比:创业团队技术选型指南

在Web开发领域,框架选择直接影响项目的开发效率和可维护性。Laravel作为PHP的旗舰框架,以其优雅的语法和丰富的开箱即用功能著称;而Spring Boot则是Java生态中企业级应用的首选,强调类型安全和系统稳定性。从技术原理看,Laravel采用Active Record模式的Eloquent ORM,简化了数据库操作;Spring Boot则基于依赖注入和AOP等设计模式,适合复杂业务场景。对于创业团队而言,开发效率是核心考量因素,特别是在快速迭代的MVP阶段。实际工程实践中,Laravel在项目

weixin_34234721的博客 374

探索Larasail:一个创新的 Laravel 开发工具集

探索Larasail:一个创新的 Laravel 开发工具集 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一款由 The Dev Dojo 创建的开源项目,旨在简化 Laravel 框架的开发过程。它提供了一系列实用工具和脚手架,可以帮助开发者更高效地构建 Laravel 应用程序,提高生产力。 技术分析 Larasail 基于 PHP 的 Laravel 框架,...

gitblog_00077的博客 438

使用Windows搭建Laravel Sail开发环境

Laravel Sail提供了一个快速、简便的方式来管理Laravel项目的开发环境,并且与Docker集成,使得项目的部署和运行更加便捷。使用Laravel Sail,您可以专注于开发出色的Laravel应用程序,而无需担心配置和管理开发环境的细节。Laravel Sail是一个轻量级的开发环境,可以帮助开发人员快速搭建和管理Laravel项目。在Windows上搭建Laravel Sail开发环境非常简单,并且可以为您的Laravel项目提供一个一致的开发环境。来查看您的Laravel应用程序。

YxmtAi的博客 565

推荐使用 Laravel Sail:Docker 驱动的本地开发新体验

推荐使用 Laravel Sail:Docker 驱动的本地开发新体验 sailDocker files for running a basic Laravel application.项目地址:https://gitcode.com/gh_mirrors/sa/sail Laravel Sail 是一个专为 Laravel 框架设计的强大本地开发环境,它依赖于 Docker,能在 macOS,...

gitblog_00063的博客 532

关于使用vcpkg下载osgearth遇到的问题

注意--x-manifest-root=后面跟着的E:\gitproject\osgearth-osgearth-3.5\vcpkg是你下载的源码解压缩后vcpkg.json的文件地址,然后等待编译完成。安装vcpkg后使用vcpkg install osgearth:x64-windows安装好osgearth并且导入项目使用时,发现无法运行官方文档中示例的main.cpp。这里写一种自己用过的使用vcpkg安装osgearth3.5的方法,源码,打开vcpkg所在的命令行,执行。示例main.cpp。

m0_61776040的博客 1523

信号系统核心概念:卷积、傅里叶变换与抽样定理的工程实践指南

信号与系统是理解现代电子、通信与数字处理技术的基石。其核心在于通过数学工具对物理世界进行建模与分析,其中卷积运算揭示了线性时不变系统对任意输入的响应可分解为冲激响应的叠加,这一原理极大提升了系统测试与分析的效率。而傅里叶变换则提供了从时域到频域的映射,将复杂的时域卷积运算转化为频域的简单乘法,是实现频谱分析、滤波设计的关键。抽样定理则架起了模拟与数字世界的桥梁,明确了无失真数字化的条件。这些基础理论共同构成了滤波器设计、音频处理、图像分析及通信系统等广泛工程应用的技术支柱。本文聚焦于卷积与傅里叶变换,结合冲

weixin_30788619的博客 629

Laravel Sail 项目常见问题解决方案

Laravel Sail 是一个使用 Docker 的 Laravel 开发环境配置项目,旨在为 Laravel 开发者提供一个简单且一致的开发环境。该项目主要使用以下编程语言: - Shell 脚本 - PHP - Dockerfile ## 新手在使用 Laravel Sail 时需特别注意的三个问题及解决步骤 ### 问题一:如何安装和启动 Laravel Sail **问题描述:*...

gitblog_00564的博客 519

[LaTeX] 使用natbib宏包实现参考文献的“作者-年份”引用格式及常见编译错误排查

本文详细介绍了在LaTeX中使用natbib宏包实现参考文献“作者-年份”引用格式的完整流程。从宏包配置、.bib文件准备到标准编译步骤,重点解析了常见的“Bibliography not compatible with author-year”错误成因,并提供了彻底清理辅助文件等解决方案,帮助用户高效排版符合学术规范的参考文献。

moon9的博客 481

一个支持 PHP8 / Laravel 8 & 9 的 docker 镜像

最近组里的一个项目使用了 Laravel 8 来开发。Laravel 8 自带的 sail 提供了开发时的镜像打包脚本,但它是直接运行 php 命令行进程,不能用于生产环境。 为了方便开发和部署,我做了一个 Nginx + PHP 8 (fpm)的 docker 镜像

Tangramor的专栏 2250

博图编写温度程序_s7 smart200的CRC-16校验程序

最近做一个小项目,项目中采用485自由口通讯方式,使用一台西门子S7 smart200对一台冷水机做多个状态和温度做监控,并能对冷水机进行启停控制,和参数设置,因为冷水机的协议不是标准modbus格式,所以要自己编写通信协议。其中要用到CRC校验,在网上找了些别人写的程序,基本上用不了。只能自力更生了。首先,找到CRC校验的算法,并理解。 下面就是我找的算法(这个网上很多),1....

weixin_39539761的博客 3062

Codex 团队如何用自己的产品构建产品——整个 Spec 只有 10 个要点

OpenAI Codex团队采用极简产品开发模式,整个产品规格仅10个要点。团队50-100人长期仅1名PM,设计师代码量已超过工程师。产品负责人Alexander Embiricos透露,团队几乎不写详细文档,仅在需要协调时写简短要点。OpenAI采用独特规划哲学:只做8周内短期或长期方向性规划,拒绝中期路线图。2025年GPT-5.2 Codex发布后,模型能力突破催生了桌面应用开发。团队强调"让离代码最近的人做决策",PM角色转变为"填空者",设计师与工程师界限

347

使用 PhpStorm 来开发和 Debug Laravel Sail 项目

Laravel Sail 安装 Laravel Sail 是为 Laravel 提供的基于 Docker 的开发环境,可同时搭建包含 PHP、MySQL、Redis,XDebug 在内的开发环境,优势: 降低开发环境的搭建难度 将对主机已有环境的影响降至最低 统一团队开发环境 在 WSL 内使用指令: curl -s https://laravel.build/<项目名称> | bash 执行后,将在当前目录下建立一个 <项目名称> 的文件夹,并在里面构建一个 Laravel

Microven 1626

在 SAP 里玩转 FTP:标准程序 RSFTP00x 全景解析与落地实践

摘要:SAP系统通过封装的标准FTP程序(RSFTP001-008)提供便捷的文件传输能力,适用于各类集成场景。关键点包括:1)依赖SAPFTP可执行程序和RFC目的地;2)使用RSFTP005进行前置检查并生成RFC配置;3)标准报表各司其职,如RSFTP002用于命令测试、RSFTP007/008提供参考实现;4)开发时组合FTP_CONNECT/COMMAND/DISCONNECT等函数模块。特别注意前台(SAPFTP)与后台(SAPFTPA)的环境差异,这是常见故障点。该方案通过标准化工具链显著降低

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 210

laravel sail的坑

sail composer update或者sail composer require package导致更新sail本身,而处于容器内的/var/www/html/vendor/laravel/sail/bin/sail文件被占用无法删除,导致跟新产生冲突 解决方案: 不让包更新 由图可知sail由1.12.9变化到其他版本,所以只需要修改composer.json为固定的1.12.9即可 参考:版本号定义和composer依赖版本符号~,^_sunhaijingxiaohai的专栏-

u011009575的博客 754

VTK:vtkAssembly用法实战

VTK:vtkAssembly用法实战程序输出程序完整源代码 程序输出 程序完整源代码 #include <vtkActor.h> #include <vtkAssembly.h> #include <vtkAxesActor.h> #include <vtkCubeSource.h> #include <vtkNamedColors.h> #include <vtkNew.h> #include <vtkOrientation

希望我的博客,能帮上你解决学习中工作中所遇到的问题 932

Vue - 列表拖曳排序 / 鼠标拖动改变顺序排列高效简洁组件(支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无 BUG)

Vue-高效简洁列表拖曳排序/鼠标拖动改变顺序排列组件支持PC端与移动端触屏拖动,也可在滚动条内排序自动滚动,流畅丝滑无BUG列表拖曳排序插件vuedraggable拉动拽动拖动顺序改变排序js,vue.js,nuxt.js列表如何实现鼠标拖曳改变顺序排列支持滚动条内复杂数据对象带拖动效果动画排序完毕自动排列数组位置克隆Vue.Draggable官方文档教程SortableJS与vuedraggable列表拖动排序Vue拖拽组件库vuedraggable的安装与使用用户用鼠标拖动排序功能源码最好

🏆 前端领域优质创作者 4847

科普贴:深入探索用于构建Web应用的跨平台PHP框架 - Laravel

本文回答了“什么是Laravel?”这个问题。通过将其分解为Web开发中使用的PHP框架的基础知识的概述。接下来,我们将概述Laravel的功能,列出Laravel的重要结构和组件,并描述一些更有用的Laravel包。

WPHunter的编程技术资料库! 1519

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在 Ubuntu 24.04 上使用 Laravel Sail的开发

环境准备初始化脚本或。启动sail up -d。开发:所有phpcomposernpm命令前加sail。你想让我帮你配置一个特定的,比如加上 Redis 或 Mailpit (邮件测试工具) 吗?

qq_43402202的博客 309

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Laravel本地Sail开发环境下Phpstorm+浏览器+Postman调试配置

Laravel本地Sail下 搭建XDebug开发环境 浏览器+Postman调试方法

乌鸦白的专栏 1127

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Laravel/Sail 中修改npm源的问题

如果Laravel用户选择使用sail搭建开发环境,那么有可能会遇到npm安装依赖缓慢,甚至失败的情况。编辑 vendor/laravel/sail/runtimes/8.3/Dockerfile文件。runtimes目录下有多个目录,分别对应不同版的php,这里选择8.3则对应php 8.3版本。找到 && apt-get install -y nodejs \ 这一行。这里有一个给sail中npm换源的方法。如果还想安装一些类库也可以在这里修改。

HOOLOO的专栏 543

在运行 Laravel Sail 前,需安装 Docker Desktop 并完成基础配置/具体步骤

(控制面板 → 程序 → 启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”)。通过以上步骤完成 Docker Desktop 安装和基础配置后,即可通过。(windows安装包 有两个版本)修改 Docker 配置文件。:Windows 用户需确保。完成后重启 Docker。启动 Sail 环境。

主要用于自己跨设备浏览文章。不知道自己写了什么,有些是AI总结的,仅供参考。 1038

Laravel Sail的10个强大功能:从新手到专家的完整教程

Laravel Sail是一个基于Docker的本地开发环境工具,为Laravel应用提供了跨平台(macOS、Windows WSL2和Linux)的统一开发体验。无需在本地安装复杂的软件或库,只需Docker环境,就能通过简单的CLI命令快速构建和运行Laravel应用,即使是Docker新手也能轻松上手。 [![Laravel Sail标志](https://raw.gitcode.com

gitblog_00973的博客 1099

驾驭安全之帆 —— Sail-SSL 全面解析与应用推荐

???? 驾驭安全之帆 —— Sail-SSL 全面解析与应用推荐 在当今互联网时代,数据的安全传输至关重要。对于开发者而言,确保网站或应用的通信过程中的加密成了一个不可或缺的标准操作。今天,让我们一起深入了解一款旨在让您的Laravel应用轻松实现SSL配置的神器——Sail-SSL。 项目介绍 Sail-SSL 是一个专门为 Laravel Sail 环境设计的插件,它简化了在本地开发环境中启用SS...

gitblog_00796的博客 1221

【LARAVEL】使用octane加速

【代码】【LARAVEL】使用octane加速。

拾艾's 1108

初识 Laravel Octane

我梳理了一下 Octane Swoole 模式的处理流程。最重要的是要了解容器实例的生命周期,对于使用 Octane 扩展程序至关重要。需要清楚地了解哪些对象是在 worker 进程中共享的,哪些对象需要在每次请求后清理。避免全局数据污染,这可能导致数据混乱。如有勘误,请指正

qq_31470439的博客 980

PHP性能提升方案

PHP语言开发效率高,特别应用于适合中小型项目,对于创业初期敏捷开发验证项目可行性或者Demo演示绝对占据优势。但是随着现在Web应用的复杂性,针对项目要适应高并发、高流量的访问特性,PHP确实在性能方面相对Go、Java存在一定的差距。那真的这种情况,我们如何应对呢?

分享不一样的技术,与你一起共同成长! 2193
上一篇: Vue 子组件直接修改 props 中的属性值(单向数据流)
下一篇: Laravel 中使用 Mix 配置 Element-plus 自动导入
微波炉...
博客等级 码龄7年 2324粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值