Laravel Octane
Laravel Octane 是 Laravel 官方推出的应用加速引擎,通过使用高性能的应用服务器来提升应用性能,保持应用常驻内存,显著减少请求响应时间。
为什么选择 Octane?
- 🚀 极致性能:减少启动时间,显著提升请求处理速度
- 🔄 内存常驻:应用只需引导一次,持续驻留在内存中
- 🔌 兼容性强:支持多种高性能服务器(Swoole、RoadRunner、Open Swoole、FrankenPHP)
- 🚄 并发能力:强大的并发处理和协程支持(特别是 Swoole)
- 🧠 智能缓存:支持超高速内存表和缓存系统(Swoole)
- ⏰ 定时任务:支持高精度的定时器和间隔任务(Swoole)
- 🔍 开发友好:支持文件变更监控,实时重载应用
环境要求
- PHP >= 8.1
- Laravel >= 10.0
- RoadRunner 服务器(当前)
- Swoole 扩展(计划中)
快速开始
Laravel Skeleton 已经内置了 Octane,使用前请确认:
安装 Octane 配置文件:
bashphp artisan octane:install
启动 Octane 服务:
bashphp artisan octane:start
使用监控模式(开发环境推荐):
bashphp artisan octane:start --watch
提示
Laravel Skeleton 支持在 PhpStorm 中直接运行 Octane,通过项目根目录下的 .run/octane.run.xml
配置文件,已预配置 --watch
选项。
服务器选择
当前配置:RoadRunner
Laravel Skeleton 目前使用 RoadRunner 作为 Octane 服务器:
env
OCTANE_SERVER=roadrunner
RoadRunner 是一个基于 Go 的高性能应用服务器,优势包括:
- 轻量级设计
- 内存占用低
- 跨平台支持良好
- 配置简单
未来规划:Swoole
Laravel Skeleton 计划在后期迁移到 Swoole:
env
# 未来计划迁移
# OCTANE_SERVER=swoole
Swoole 的主要优势:
- 功能更加丰富(协程、内存表、定时器等)
- 更高的性能和并发处理能力
- 更成熟的生产环境应用案例
- 活跃的社区支持和维护
配置选项
基础配置
env
# 服务器类型:roadrunner、swoole、frankenphp
OCTANE_SERVER=roadrunner
# 是否启用 HTTPS
OCTANE_HTTPS=false
注意
在生产环境中,建议使用进程管理器(如 Supervisor)来管理 Octane 进程,并通过 Nginx 作为反向代理。
提示
更多配置选项请参考 Laravel Skeleton Octane 配置。
PhpStorm 集成
Laravel Skeleton 提供了 PhpStorm 运行配置,可以直接在 IDE 中启动 Octane 服务:
- 打开 PhpStorm
- 在运行配置下拉菜单中选择 "Octane"
- 点击运行按钮启动服务
运行配置文件 .run/octane.run.xml
已预先配置,支持文件变更监控(--watch)。
性能优化
状态管理
Octane 应用是常驻内存的,需要注意以下几点:
避免静态/全局状态:
php// ❌ 不推荐 - 可能导致状态污染 class Service { public static $data = []; } // ✅ 推荐 - 每个请求独立的状态 class Service { private $data = []; public function getData() { return $this->data; } }
容器绑定最佳实践:
php// ✅ 推荐 - 每个请求新实例 $this->app->scoped(Service::class); // ✅ 推荐 - 显式声明单例 $this->app->singleton(Service::class);
最佳实践
开发环境
- 使用
--watch
选项实现代码热重载 - 配合 Laravel Telescope 监控应用状态
- 定期检查内存使用情况
- 使用 PhpStorm 运行配置提升开发效率
生产环境
- 使用 Supervisor 管理 Octane 进程
- 配置 Nginx 作为反向代理
- 实施监控和告警机制
- 配置日志轮转策略
- 定期检查应用性能指标
迁移到 Swoole 的建议
准备工作:
- 安装并启用 Swoole 扩展
- 确认服务器满足运行要求
- 备份当前配置和代码
迁移步骤:
- 更新 Octane 服务器配置
- 调整应用代码以适配 Swoole
- 优化代码以利用 Swoole 特性
- 全面测试功能和性能
- 补充文档和测试用例
- 准备回滚方案
参与贡献
欢迎参与 Laravel Skeleton 的 Swoole 迁移工作!请参考贡献导引了解详细流程。
主要工作包括:
- 添加 Swoole 相关配置
- 更新服务器配置
- 优化性能和功能
- 完善文档和测试
- 确保平滑迁移
常见问题
1. 内存管理
- 问题描述:应用内存使用异常
- 解决方案:
- 避免使用静态属性存储状态
- 及时清理事件监听器
- 使用内存分析工具排查问题
- 定期重启应用进程
2. 第三方包兼容性
- 问题描述:某些包在 Octane 环境中表现异常
- 解决方案:
- 查看 Octane 兼容性文档
- 使用
WithoutOverlapping
中间件 - 在配置中添加到
warm
列表 - 联系包作者请求支持
3. 文件变更未生效
- 问题描述:修改文件后变更未反映在应用中
- 解决方案:
- 确认
--watch
选项已启用 - 手动重载:
php artisan octane:reload
- 检查文件权限和监控路径
- 考虑直接重启服务
- 确认