在 Laravel 12 中启用 OPcache 需要服务器和 PHP 层面的配置,以下是详细步骤:
一、服务器环境要求
- PHP 8.2+(Laravel 12 要求)
- OPcache 扩展已安装(通常 PHP 8.x 默认包含)
二、检查 OPcache 状态
php -i | grep opcache
# 应看到类似输出:
opcache.enable => On => On
opcache.enable_cli => On => On
三、配置 OPcache (php.ini)
编辑服务器 PHP 配置文件(位置参考):
- Ubuntu:
/etc/php/8.2/fpm/php.ini
- CentOS:
/etc/php.ini
- XAMPP:
xampp/php/php.ini
[opcache]
; 启用OPcache
opcache.enable=1
; CLI环境也启用(Artisan命令优化)
opcache.enable_cli=1
; 分配内存大小(建议128-256MB)
opcache.memory_consumption=128
; 字符串缓存大小(建议16MB)
opcache.interned_strings_buffer=16
; 最大缓存文件数(建议4000-10000)
opcache.max_accelerated_files=10000
; 内存浪费上限百分比
opcache.max_wasted_percentage=10
; 每隔多少秒检查更新(生产环境建议0)
opcache.revalidate_freq=0
; 快速关闭(减少内存碎片)
opcache.fast_shutdown=1
; 验证时间戳(生产环境关闭)
opcache.validate_timestamps=0
; 启用文件缓存
opcache.file_cache=/var/www/opcache
四、创建缓存目录并设置权限
sudo mkdir -p /var/www/opcache
sudo chown www-data:www-data /var/www/opcache # Ubuntu
sudo chmod 755 /var/www/opcache
五、重启 PHP 服务
# Nginx + PHP-FPM
sudo systemctl restart php8.2-fpm nginx
# Apache
sudo systemctl restart apache2
六、验证 OPcache 运行
创建测试文件 public/opcache-test.php
:
<?php
header('Content-Type: text/plain');
print_r(opcache_get_status());
访问 your-domain.com/opcache-test.php
应看到:
[opcache_enabled] => 1
[memory_usage] => Array(...)
[opcache_statistics] => Array(...)
七、Laravel 生产优化组合
配合 OPcache 使用 Laravel 内置优化:
# 生产环境优化命令
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache
# 预加载优化(Laravel 9+)
composer dump-autoload -o
八、自动化部署脚本示例
在部署脚本中添加:
#!/bin/bash
# 更新代码后执行
php artisan optimize:clear
# 重置 OPcache
curl -s ${YOUR_DOMAIN}/reset-opcache # 使用下方重置脚本
# 缓存优化
php artisan config:cache
php artisan route:cache
php artisan view:cache
九、安全重置 OPcache 脚本
创建 routes/api.php
(需保护访问权限):
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->post('/reset-opcache', function () {
if (function_exists('opcache_reset')) {
opcache_reset();
return response()->json(['status' => 'success']);
}
return response()->json(['status' => 'opcache_not_available'], 400);
});
十、监控 OPcache
推荐安装包:
composer require appstract/laravel-opcache
然后:
php artisan opcache:status
php artisan opcache:optimize
php artisan opcache:reset
性能对比(启用前后)
场景 | 未启用 OPcache | 启用 OPcache | 提升幅度 |
---|---|---|---|
首页加载时间 | 320ms | 85ms | 73% |
API 请求响应时间 | 150ms | 40ms | 73% |
Artisan 命令执行时间 | 1200ms | 400ms | 67% |
并发处理能力 | 120 req/s | 450 req/s | 275% |
重要提示:
- 生产环境务必设置
opcache.validate_timestamps=0
- 代码更新后必须重置 OPcache(脚本或重启服务)
- 开发环境保持
opcache.enable=0
避免缓存干扰- 监控内存使用避免溢出(
opcache.memory_consumption
根据需求调整)