OPcache是PHP内置的字节码缓存扩展,可避免重复编译PHP脚本,显著提升执行效率。
php-opcache包(适用于PHP 5.5+):sudo yum install php-opcache
/etc/php.ini,添加或修改以下参数(根据服务器内存调整):[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0 # 生产环境建议关闭CLI模式的OPcache
opcache.memory_consumption=128 # OPcache缓存内存大小(MB),建议64-256MB
opcache.interned_strings_buffer=8 # 内部字符串缓存大小(MB)
opcache.max_accelerated_files=10000 # 可缓存的脚本文件数量(根据项目文件数调整)
opcache.revalidate_freq=60 # 脚本修改后重新验证的时间间隔(秒)
opcache.fast_shutdown=1 # 快速关闭模式,提升脚本结束时的资源回收速度
opcache.huge_code_pages=1 # 启用大内存页支持(需系统开启HugePages)
sudo systemctl restart php-fpm
PHP-FPM(FastCGI Process Manager)比传统的mod_php更高效,合理配置进程管理可提升资源利用率。
sudo yum install php-fpm
/etc/php-fpm.d/www.conf):pm = dynamic # 动态进程管理模式(推荐),根据负载自动调整进程数
pm.max_children = 50 # 最大子进程数(根据服务器内存计算:(可用内存-1G)/单个进程内存,如1GB内存可设30-40)
pm.start_servers = 5 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲子进程数(避免频繁创建进程)
pm.max_spare_servers = 35 # 最大空闲子进程数(避免资源浪费)
pm.max_requests = 500 # 每个子进程处理的最大请求数(防止内存泄漏,达到后重启进程)
rlimit_files = 10240 # 增加文件描述符限制(应对高并发)
sudo systemctl restart php-fpm
优化基础配置可减少资源消耗,提升执行效率。
memory_limit = 256M # 根据应用需求调整(如WordPress建议128-256M)
max_execution_time = 300 # 脚本最大执行时间(秒,默认30,高并发应用可适当增加)
upload_max_filesize = 50M # 允许上传的最大文件大小(根据需求调整)
post_max_size = 50M # POST数据的最大大小(需大于upload_max_filesize)
output_buffering = On # 开启输出缓冲(减少HTTP请求次数,提升页面加载速度)
implicit_flush = Off # 关闭隐式刷新(避免频繁发送数据到客户端)
disable_functions = exec,passthru,shell_exec,system # 禁用危险函数(生产环境必做,防止恶意利用)
session.save_handler = files # 会话存储方式(如需更高性能,可改为Redis:session.save_handler = redis)
session.save_path = /var/lib/php/session # 会话存储路径
缓存频繁访问的数据库查询结果或页面片段,减少数据库负载和脚本执行时间。
sudo yum install epel-release
sudo yum install redis
sudo systemctl start redis && sudo systemctl enable redis
php-redis扩展:sudo yum install php-redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$cacheKey = 'user_data_' . $userId;
if ($redis->exists($cacheKey)) {
$userData = $redis->get($cacheKey);
} else {
$userData = $db->query("SELECT * FROM users WHERE id = $userId")->fetch();
$redis->setex($cacheKey, 3600, serialize($userData)); // 缓存1小时
}
worker_processes auto;(根据CPU核心数自动设置)events { worker_connections 1024; use epoll; }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压缩:AddOutputFilterByType DEFLATE text/html text/css application/jsonKeepAlive On; MaxKeepAliveRequests 100; KeepAliveTimeout 65;strlen()在循环内使用)。SELECT *,使用预处理语句防止SQL注入。Swoole替代传统PHP扩展,提升并发处理能力(适合高并发应用)。top、htop监控CPU和内存使用,vmstat查看系统负载,New Relic或XHProf进行性能分析。通过以上步骤,可显著提升CentOS上PHP的执行速度。需根据实际应用场景(如流量大小、数据库复杂度)调整参数,避免过度优化。