config/cache.php)启用数据缓存(如Redis、Memcached)、路由缓存(php think optimize:route命令生成)、配置缓存(php think optimize:config),减少重复的数据库查询和文件读取。.env文件中设置APP_DEBUG = false,避免框架记录详细的调试日志(如SQL执行、请求追踪),减少I/O开销。php.ini中添加以下配置:zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=256 # 缓存内存大小(MB,根据服务器内存调整)
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000 # 缓存文件数量
opcache.revalidate_freq=60 # 文件修改后重新编译的时间间隔(秒)
这能显著提升PHP脚本执行速度(通常提升20%-50%)。php-fpm.conf(或www.conf)中的进程参数,避免进程过多导致内存耗尽:pm.max_children = 50 # 最大子进程数(建议:内存总量/单个进程内存占用,如1GB内存可设为50)
pm.start_servers = 10 # 启动时的子进程数
pm.min_spare_servers = 5 # 最小空闲进程数
pm.max_spare_servers = 20 # 最大空闲进程数
这样能平衡进程创建和销毁的开销。SELECT *,只查询需要的字段;user_id、status)添加索引(使用ALTER TABLE table_name ADD INDEX index_name(column_name));withJoin()或with()方法预加载关联模型,避免N+1查询(如查询用户及其订单时,一次性获取所有数据而非循环查询)。config/database.php中配置连接池(ThinkPHP 6+支持Swoole连接池),减少频繁建立和关闭数据库连接的开销:'connections' => [
'mysql' => [
'type' => 'mysql',
'pool_size' => 100, // 连接池大小(根据并发量调整)
'pool_get_timeout' => 5, // 获取连接的超时时间(秒)
],
];
slow_query_log = 1,long_query_time = 1),通过mysqldumpslow或MySQL Workbench分析执行慢的SQL,针对性优化。Schedule)预热热点数据,例如每小时将热门商品数据加载到Redis中:$schedule->call(function() {
Cache::store('redis')->set('hot_products', Db::name('products')->where('is_hot', 1)->select(), 3600);
})->hourly();
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://127.0.0.1:8080; # 转发到ThinkPHP应用(如PHP-FPM监听端口)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 开启Gzip压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_comp_level 6;
}
foreach循环中执行Db::query(),应先将数据查询出来,再在循环中处理(如批量更新)。insertAll()、updateAll()替代单条插入/更新,减少数据库交互次数(如批量插入100条数据只需1次SQL执行)。// 启动Swoole HTTP服务器
$http = new Swoole\Http\Server("0.0.0.0", 9501);
$http->on('request', function ($request, $response) {
require_once __DIR__ . '/thinkphp/base.php';
// 处理请求...
});
$http->start();
top、htop(查看CPU、内存占用)、vmstat(查看系统整体性能)、iostat(查看磁盘I/O)监控服务器状态;使用New Relic、Datadog监控应用性能(如响应时间、SQL执行时间、缓存命中率)。runtime/cache)、日志(runtime/log)、临时文件(runtime/temp),释放服务器存储空间。通过以上多维度的优化策略,能显著提升ThinkPHP应用在CentOS环境下的性能,应对高并发场景的需求。优化过程中需根据实际业务场景调整参数(如缓存大小、连接池数量),并通过监控工具持续跟踪效果。