1. 安装并配置OPcache(核心加速手段)
OPcache是PHP官方推出的字节码缓存扩展,可避免重复编译PHP脚本,显著提升执行效率。Ubuntu上安装OPcache的步骤如下:
sudo apt update && sudo apt install php-opcache(根据PHP版本替换php-opcache,如php8.2-opcache)。/etc/php/8.2/fpm/php.ini或/etc/php/8.2/cli/php.ini),添加以下关键参数:[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128 # 缓存内存大小(MB),根据服务器内存调整
opcache.interned_strings_buffer=8 # 内部字符串缓存大小
opcache.max_accelerated_files=10000 # 最大加速文件数(需覆盖项目文件数量)
opcache.revalidate_freq=60 # 文件修改检查频率(秒)
opcache.fast_shutdown=1 # 快速关闭机制
sudo systemctl restart php8.2-fpm)或Apache(sudo systemctl restart apache2)使更改生效。2. 使用PHP-FPM替代传统进程管理
PHP-FPM(FastCGI Process Manager)比传统的mod_php(Apache模块)更高效,尤其适合高并发场景。
sudo apt install php8.2-fpm(版本需与PHP核心一致)。/etc/php/8.2/fpm/pool.d/www.conf,调整以下参数:pm.max_children = 10 # 最大子进程数(根据服务器内存计算:总内存/单个进程内存)
pm.start_servers = 4 # 启动时的子进程数
pm.min_spare_servers = 2 # 最小空闲子进程数
pm.max_spare_servers = 6 # 最大空闲子进程数
pm.max_requests = 500 # 每个子进程处理的最大请求数(避免内存泄漏)
server块中添加:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
sudo systemctl restart php8.2-fpm。3. 引入缓存层(减少数据库负载)
使用Memcached或Redis缓存数据库查询结果、会话数据等,可大幅减少数据库访问次数,提升响应速度。
sudo apt install memcached php-memcachedsudo apt install redis-server php-redis.env、WordPress的wp-config.php),将数据库缓存驱动设置为memcached或redis。redis-cli monitor)确认缓存被正确使用。4. 升级到最新稳定版PHP
新版本PHP通常包含性能改进、安全修复和优化。Ubuntu默认仓库的PHP版本可能较旧,建议通过以下步骤安装最新版:
sudo add-apt-repository ppa:ondrej/phpsudo apt update && sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl(根据需求选择扩展)。update-alternatives或Web服务器配置指定默认版本。5. 优化PHP配置参数
调整php.ini中的关键参数,平衡性能与资源占用:
memory_limit = 256M(根据应用需求调整,避免过大导致内存耗尽)。upload_max_filesize = 32M、post_max_size = 32M(支持大文件上传)。max_execution_time = 30(脚本最大执行时间,动态页面可适当延长)。date.timezone = Asia/Shanghai(避免时间解析开销)。6. 代码级优化(减少资源消耗)
pdo_mysql.default_socket配置)。7. 使用高效的Web服务器
Nginx比Apache更适合处理高并发请求,尤其在静态文件(CSS、JS、图片)处理上性能更优。
sudo apt install nginx/etc/nginx/sites-available/default,添加PHP处理块:server {
listen 80;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
# 启用Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;
}
sudo systemctl restart nginx。8. 启用压缩(减少传输体积)
通过Gzip或Brotli压缩HTML、CSS、JS等文本资源,可减少网络传输时间(通常压缩率可达50%-70%)。
/etc/nginx/nginx.conf的http块中添加:gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
.htaccess中添加:<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
</IfModule>
Content-Encoding: gzip。