1. 安装并启用OPcache扩展
OPcache是PHP官方推出的字节码缓存扩展,可避免重复编译PHP脚本,显著提升执行效率。安装命令:sudo apt-get install php-opcache(根据PHP版本调整,如php8.2-opcache)。启用步骤:编辑php.ini(通过php --ini查找路径),添加/修改以下参数:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 缓存内存大小(MB),根据服务器内存调整
opcache.max_accelerated_files=10000 # 缓存文件数量上限
opcache.revalidate_freq=60 # 文件修改后重新验证间隔(秒)
opcache.fast_shutdown=1 # 快速关闭机制
重启PHP服务(如PHP-FPM:sudo systemctl restart php8.2-fpm)使配置生效。
2. 使用PHP-FPM替代传统PHP模块
PHP-FPM(FastCGI Process Manager)比mod_php(Apache模块)更高效,尤其适合高并发场景。安装命令:sudo apt-get install php-fpm。配置优化:编辑/etc/php/8.2/fpm/pool.d/www.conf(版本替换),调整进程管理参数:
pm = dynamic # 动态进程模式
pm.max_children = 50 # 最大子进程数(根据服务器内存计算:总内存/单个进程内存)
pm.start_servers = 10 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 20 # 最大空闲子进程数
pm.max_requests = 1000 # 每个子进程处理请求数上限(避免内存泄漏)
重启PHP-FPM服务:sudo systemctl restart php8.2-fpm。
3. 优化PHP配置参数
调整php.ini中的关键参数,平衡性能与资源占用:
memory_limit = 256M # 单个脚本最大内存(根据应用需求调整,避免过大)
max_execution_time = 30 # 脚本最大执行时间(秒),超时报错
post_max_size = 32M # POST请求最大数据量
upload_max_filesize = 32M # 上传文件最大大小
disable_functions = exec,passthru,shell_exec # 关闭危险函数(可选,提升安全性)
修改后重启PHP服务。
4. 引入缓存技术减少数据库负载
使用Redis或Memcached缓存频繁访问的数据库查询结果或页面片段,降低数据库压力。以Redis为例:
sudo apt-get install php-redisphp.ini添加extension=redis.so,重启PHP服务。$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'user_data_1';
if ($redis->exists($key)) {
$data = $redis->get($key);
} else {
$data = $pdo->query("SELECT * FROM users WHERE id = 1")->fetchAll();
$redis->setex($key, 3600, json_encode($data)); // 缓存1小时
}
适用于高流量场景,可大幅提升数据库密集型应用的性能。
5. 优化数据库查询与连接
php.ini:mysqli.allow_persistent = On
mysqli.max_persistent = 100 # 最大持久连接数
EXPLAIN分析查询执行计划,添加索引(如ALTER TABLE users ADD INDEX idx_username (username)),避免SELECT *(只查询必要字段)。Swoole)复用数据库连接,减少连接创建成本。6. 代码级性能优化
array_map代替foreach遍历数组),内置函数通常更快。unset($var)),避免内存泄漏。7. 使用性能分析工具定位瓶颈
通过工具找出代码中的性能热点(如慢函数、高内存占用),针对性优化:
composer require blackfire/agent,代码中启用:Blackfire::start()->end(),查看 dashboard 分析结果。xdebug_start_trace()),分析函数调用栈和时间。8. 其他优化措施
sudo add-apt-repository ppa:ondrej/php && sudo apt update && sudo apt install php8.2。gzip on; gzip_types text/plain text/css application/json;)。