1. 安装并配置OPcache(关键优化手段)
OPcache是PHP内置的字节码缓存扩展,可避免重复编译脚本,显著提升执行效率。
php-opcache包(适用于多数CentOS PHP版本):sudo yum install php-opcache /etc/php.ini,添加或修改以下参数(根据服务器内存调整):[opcache] zend_extension=opcache.so ; 启用扩展 opcache.enable=1 ; 开启OPcache opcache.enable_cli=1 ; CLI模式下也启用 opcache.memory_consumption=128 ; 共享内存大小(MB),建议128-256MB opcache.interned_strings_buffer=8 ; 内部字符串缓存大小(MB) opcache.max_accelerated_files=4000 ; 可缓存的脚本文件数量 opcache.revalidate_freq=60 ; 文件修改检查间隔(秒),生产环境建议60-300秒 opcache.fast_shutdown=1 ; 快速关闭,减少内存释放时间 sudo systemctl restart php-fpm ; 若使用PHP-FPM # 或 sudo systemctl restart nginx/apache ; 若使用Web服务器 2. 优化PHP-FPM配置(提升进程管理效率)
PHP-FPM是PHP FastCGI进程管理器,合理配置可平衡内存使用与并发处理能力。
/etc/php-fpm.d/www.conf(路径可能因发行版略有差异)。dynamic(动态调整进程数,适合大多数场景):pm = dynamic pm.max_children = 50 ; 最大子进程数((可用内存-1G)/单个进程内存,如2G内存约分配1G给PHP) pm.start_servers = 5 ; 启动时的进程数(建议为max_children的1/10) pm.min_spare_servers = 5 ; 最小空闲进程数(避免频繁创建进程) pm.max_spare_servers = 35 ; 最大空闲进程数(避免内存浪费) pm.max_requests = 500 ; 每个子进程处理500个请求后重启 rlimit_files = 10240 ; 提高文件描述符上限 sudo systemctl restart php-fpm 3. 调整PHP配置文件(php.ini)
优化基础配置以适应应用需求,减少不必要的资源消耗。
memory_limit = 256M ; 脚本最大内存(根据应用调整,如大型应用可设为512M) max_execution_time = 300 ; 脚本最大执行时间(秒,生产环境建议30-300秒) display_errors = Off log_errors = On error_log = /var/log/php-fpm/error.log error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT upload_max_filesize = 50M post_max_size = 50M output_buffering = On implicit_flush = Off 4. 代码级优化(从根源提升性能)
优化代码逻辑可显著减少资源消耗,提升响应速度。
// 示例:使用Redis缓存 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $data = $redis->get('cached_key'); if (!$data) { $data = $db->query("SELECT * FROM large_table"); // 数据库查询 $redis->setex('cached_key', 3600, serialize($data)); // 缓存1小时 } SELECT *(只查询所需字段),使用JOIN替代子查询,避免N+1查询问题。5. 使用高效的Web服务器(提升静态资源处理能力)
Nginx比Apache更适合处理高并发静态请求,建议作为前端服务器。
sudo yum install nginx /etc/nginx/conf.d/example.conf):server { listen 80; server_name example.com; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ =404; ; 尝试直接访问文件,不存在则返回404 } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/run/php-fpm/www.sock; ; 与PHP-FPM通信的socket fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } sudo systemctl restart nginx 6. 启用JIT编译(PHP 8+显著提升性能)
PHP 8及以上版本支持JIT(Just-In-Time)编译,可将部分代码编译为机器码,提升执行速度。
php -v /etc/php.ini,添加以下配置:[opcache] opcache.jit_buffer_size=100M ; JIT缓冲区大小(根据内存调整) opcache.jit=1235 ; 推荐配置(1=启用,2=函数级,3=方法级,5=全局) sudo systemctl restart php-fpm 7. 监控与调优(持续优化性能)
使用工具监控PHP性能,及时发现瓶颈。
top、htop查看CPU、内存使用情况;vmstat 1查看系统整体性能。www.conf中开启状态页,通过Nginx访问查看进程状态:pm.status_path = /status ; 在www.conf中添加 Nginx配置:location ~ ^/(status|ping)$ { fastcgi_pass unix:/run/php-fpm/www.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; allow 127.0.0.1; deny all; } 访问http://example.com/status查看状态(需替换为实际域名)。8. 其他优化建议
php.ini中通过disable_functions禁用可能被恶意利用的函数(如exec、passthru):disable_functions = exec,passthru,shell_exec,system gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_comp_level 6; ; 压缩级别(1-9)