Ubuntu PHP环境优化指南
OPcache是PHP性能提升的核心工具,通过缓存脚本编译后的字节码,避免重复解析,显著减少CPU消耗。
sudo apt install php-opcache(适用于PHP 7.x/8.x)。/etc/php/{version}/fpm/php.ini(FPM模式)或/etc/php/{version}/cli/php.ini(CLI模式),添加/修改以下参数:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1 # CLI模式下也启用
opcache.memory_consumption=128 # 缓存内存大小(MB),根据服务器内存调整
opcache.max_accelerated_files=4000 # 缓存文件数量(需覆盖项目所有PHP文件)
opcache.revalidate_freq=60 # 文件修改后重新验证的时间间隔(秒)
opcache.fast_shutdown=1 # 快速关闭机制,提升脚本结束时的内存释放效率
sudo systemctl restart php{version}-fpm(如php8.1-fpm)。PHP-FPM(FastCGI Process Manager)是PHP的进程管理工具,合理的进程配置能平衡性能与资源占用。
/etc/php/{version}/fpm/pool.d/www.conf,优先选择dynamic模式(适合负载波动大的环境):pm = dynamic
pm.max_children = 50 # 最大子进程数(根据服务器内存计算:如2GB内存可设30-50)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数(避免频繁创建进程)
pm.max_spare_servers = 35 # 最大空闲子进程数(避免资源浪费)
pm.max_requests = 500 # 每个子进程处理的最大请求数(防止内存泄漏)
request_terminate_timeout=30s(避免长时间运行的脚本占用进程),slowlog_timeout=30s(记录慢请求日志,用于排查性能瓶颈)。优化PHP基础参数,适配应用需求并减少资源浪费。
memory_limit = 256M # 单个脚本最大内存(根据应用需求调整,避免过大)
max_execution_time = 30 # 脚本最大执行时间(秒,如需处理长时间任务可适当增加)
post_max_size = 50M # POST请求最大数据量(需大于upload_max_filesize)
upload_max_filesize = 50M # 上传文件最大大小(与post_max_size匹配)
display_errors = Off # 生产环境关闭错误显示(防止敏感信息泄露)
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT # 记录错误到日志(便于排查问题)
选择高性能Web服务器并优化配置,提升PHP请求处理能力。
sudo apt install nginx。/etc/nginx/sites-available/default,添加以下location块:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php{version}-fpm.sock; # 与PHP-FPM套接字路径一致
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
sudo systemctl restart nginx。通过缓存频繁访问的数据(如数据库查询结果、会话数据),减少数据库访问次数,提升响应速度。
sudo apt install redis-server php-redis(PHP扩展)。$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 缓存数据库查询结果(示例)
$key = 'user_data_123';
if ($redis->exists($key)) {
$userData = $redis->get($key);
} else {
$userData = $db->query("SELECT * FROM users WHERE id = 123")->fetch();
$redis->set($key, $userData, 3600); // 缓存1小时
}
从代码层面减少资源消耗,提升执行效率。
unset()释放不再需要的变量(如大数组、数据库连接)。yield替代数组,减少内存占用(如读取大型CSV文件)。array_map替代foreach遍历数组)。通过监控工具实时了解系统状态,针对性调整配置。
htop(查看CPU/内存使用率)、top(查看进程资源占用)、vmstat(查看系统整体性能)等工具。php-fpm-status(需开启pm.status_path = /status)查看进程数、请求处理时间等指标。Blackfire(高级性能分析)、Xdebug(调试与性能分析)定位代码瓶颈(如慢函数、内存泄漏)。保持PHP版本最新(如当前最新稳定版为PHP 8.3),新版本通常包含性能改进、安全修复和新特性(如JIT编译器提升CPU密集型任务性能)。
sudo add-apt-repository ppa:ondrej/php(支持最新PHP版本)。sudo apt update && sudo apt upgrade php-{version}(如php8.3)。