1. 安装并配置OPcache
OPcache是PHP核心扩展,通过缓存脚本编译后的字节码,避免重复解析和编译,显著提升执行速度。在Debian中,可通过sudo apt install php-opcache安装(PHP 5.5+自带)。配置时需在php.ini中启用并优化参数:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128 # 缓存内存大小(MB),根据服务器内存调整
opcache.interned_strings_buffer=8 # 内部字符串缓冲区大小(MB)
opcache.max_accelerated_files=4000 # 最大加速文件数,建议设置为项目中PHP文件总数的1.5倍
opcache.revalidate_freq=60 # 文件修改检查频率(秒),生产环境可设为0(禁用检查)或较高值
重启PHP服务(如sudo systemctl restart php-fpm)使配置生效。
2. 优化PHP-FPM配置
若使用PHP-FPM(推荐),需调整进程管理参数以匹配服务器资源,避免资源浪费或不足。编辑/etc/php/{version}/fpm/pool.d/www.conf(如www.conf),重点调整:
pm = dynamic # 动态进程管理模式(推荐)
pm.max_children = 50 # 最大子进程数,根据服务器内存计算(如1GB内存可设为20-30)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数
pm.max_spare_servers = 10 # 最大空闲子进程数
request_terminate_timeout = 300 # 请求超时时间(秒),防止单个脚本占用过多资源
调整后重启PHP-FPM:sudo systemctl restart php-fpm。
3. 代码层面优化
function add(int $a, int $b): int {
return $a + $b;
}
strlen()),尽量将结果缓存到变量中。echo 'Hello'; vs echo "Hello";)。array_map()、strpos())用C语言实现,比自定义函数更快。yield)可减少内存占用。例如:function getLargeData() {
for ($i = 0; $i < 1000000; $i++) {
yield $i;
}
}
4. 数据库优化
p:前缀:$mysqli = new mysqli('p:localhost', 'user', 'password', 'database');
CREATE INDEX idx_column ON table_name(column_name);),避免SELECT *(只查询所需字段),减少JOIN操作次数。5. 缓存策略
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$data = $redis->get('cache_key');
if (!$data) {
$data = fetchDataFromDatabase();
$redis->set('cache_key', $data, 3600); // 缓存1小时
}
6. Web服务器优化
gzip on;
gzip_comp_level 6;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
keepalive_timeout 65;
keepalive_requests 100;
fastcgi_pass指向正确的PHP-FPM socket(如unix:/run/php/php8.2-fpm.sock;)。7. 监控与分析
top、htop、vmstat监控CPU、内存、磁盘I/O使用情况,及时调整配置。log_errors = On,error_log = /var/log/php_errors.log),快速定位问题。