1. 启用并优化OPcache(PHP字节码缓存)
OPcache是PHP内置的关键性能扩展,可缓存编译后的脚本字节码,避免重复编译,显著提升执行速度。
sudo yum install php-opcache
。/etc/php.ini
,添加或修改以下参数(根据服务器内存调整):[opcache] zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 # 允许CLI脚本使用OPcache opcache.memory_consumption=128 # 分配给OPcache的内存(MB),建议128-256MB opcache.interned_strings_buffer=8 # 内部字符串缓冲区大小(MB) opcache.max_accelerated_files=4000 # 可缓存的脚本文件数量(根据项目文件数调整) opcache.revalidate_freq=60 # 脚本更新检查频率(秒),生产环境可设为0(禁用动态检查) opcache.fast_shutdown=1 # 快速关闭,减少内存释放时间
sudo systemctl restart php-fpm
。2. 优化PHP-FPM进程管理
PHP-FPM(FastCGI进程管理器)是CentOS下PHP的高效处理方式,合理配置可提升资源利用率。
/etc/php-fpm.d/www.conf
(默认路径),设置以下参数(根据服务器CPU核心数和内存调整):pm = dynamic # 动态进程管理模式(推荐) pm.max_children = 50 # 最大子进程数(建议:(可用内存-1G)/单个进程内存,如2G内存可设为50) pm.start_servers = 5 # 启动时的子进程数 pm.min_spare_servers = 5 # 最小空闲子进程数(避免频繁创建进程) pm.max_spare_servers = 35 # 最大空闲子进程数(避免占用过多内存) pm.max_requests = 500 # 每个子进程处理的最大请求数(防止内存泄漏)
sudo systemctl restart php-fpm
。3. 升级到最新稳定版PHP
新版本PHP通常包含性能优化和新特性(如PHP 8的JIT编译),能显著提升运行速度。
sudo yum update -y sudo yum install -y php php-mysqlnd php-gd php-mbstring # 安装常用扩展
php -v
确认升级成功。4. 配置Web服务器(Nginx/Apache)优化
Web服务器的配置直接影响PHP请求的处理效率。
/etc/nginx/nginx.conf
中添加:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
/etc/nginx/conf.d/your-site.conf
)添加:location ~ \.php$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; }
mod_deflate
压缩:在/etc/httpd/conf/httpd.conf
中添加:<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/css application/json application/javascript </IfModule>
KeepAlive On
、MaxKeepAliveRequests 100
、KeepAliveTimeout 65
。sudo systemctl restart nginx
,Apache用sudo systemctl restart httpd
。5. 使用缓存系统(Redis/Memcached)
缓存频繁访问的数据(如数据库查询结果、会话数据),减少数据库负载和PHP计算时间。
sudo yum install -y redis
,启动服务:sudo systemctl start redis
。sudo yum install -y php-redis
,代码示例:$redis = new Redis(); $redis->connect('127.0.0.1', 6379); $data = $redis->get('cached_data'); if (!$data) { $data = $mysqli->query('SELECT * FROM large_table')->fetch_all(MYSQLI_ASSOC); $redis->set('cached_data', $data, 3600); // 缓存1小时 }
php.ini
:session.save_handler = redis
、session.save_path = "tcp://127.0.0.1:6379"
。6. 代码级优化
优化PHP代码逻辑,减少不必要的资源消耗。
strlen()
),提前计算结果。SELECT *
(只查询所需字段),使用预处理语句防止SQL注入。php.ini
中设置output_buffering = On
,减少HTTP请求次数。7. 禁用不必要的PHP扩展
禁用未使用的扩展可减少内存占用和启动时间。
disable_functions
参数,添加不需要的高风险函数(生产环境):disable_functions = exec, passthru, shell_exec, system, proc_open
php.ini
或/etc/php.d/
目录下的扩展文件(如mysql.ini
),注释掉不需要的扩展(如extension=mysql.so
)。8. 监控与持续调优
使用工具监控PHP性能,定位瓶颈并针对性优化。
top
、htop
查看CPU和内存使用情况,vmstat 1
查看系统级性能指标。www.conf
中启用pm.status_path = /status
,通过Nginx/Apache访问/status
查看进程状态。