一、服务器与PHP基础配置优化
php.ini中配置:zend_extension=opcache.so(启用扩展)、opcache.enable=1(开启缓存)、opcache.memory_consumption=128(分配128MB内存)、opcache.max_accelerated_files=4000(允许缓存的文件数量)、opcache.revalidate_freq=60(每60秒检查文件更新)。修改后重启PHP-FPM(sudo systemctl restart php-fpm)使配置生效。mod_php模式(Apache)。Nginx配置示例:worker_processes auto(根据CPU核心数自动设置进程数)、worker_connections 1024(每个进程的最大连接数);Apache配置:调整MaxRequestWorkers(最大请求数)、MaxConnectionsPerChild(每个子进程处理的最大连接数)。二、缓存策略深度优化
runtime/cache)。在config/app.php中配置Redis缓存:'cache' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '', // 若有密码需填写
'select' => 0, // Redis数据库索引
'timeout' => 0, // 超时时间(秒)
],
此外,可通过php think optimize:route命令生成路由缓存,减少路由注册的开销。cache方法缓存(例如:return cache('home_page', function(){ return view('home'); }, 3600);,缓存1小时);启用Gzip压缩(Nginx配置:gzip on; gzip_types text/plain text/css application/json;),减小传输数据量。三、数据库性能调优
WHERE、JOIN、ORDER BY涉及的字段)添加合适索引(使用ALTER TABLE table_name ADD INDEX index_name (column_name););通过ThinkPHP的查询构造器编写高效SQL,避免SELECT *(只查询需要的字段),禁用全表扫描;使用EXPLAIN分析慢查询(例如:EXPLAIN SELECT * FROM users WHERE status = 1;),定位性能瓶颈。Swoole的协程连接池),减少频繁建立/关闭连接的开销;通过主从复制实现读写分离(主库负责写,从库负责读),提升数据库并发处理能力。ThinkPHP可通过config/database.php配置多数据库连接,实现读写分离。四、代码与架构优化
foreach($users as $user){ $info = Db::table('info')->where('user_id', $user->id)->find(); }),应改为批量查询(Db::table('info')->whereIn('user_id', array_column($users, 'id'))->select(););使用单例模式管理频繁创建的对象(如数据库连接、Redis客户端),减少资源消耗;将业务逻辑与视图分离(使用ThinkPHP的模板引擎),避免模板中嵌入过多PHP代码。think\queue)异步处理。例如:定义任务类app/job/SendEmail.php,通过Queue::push(SendEmail::class, ['to' => 'user@example.com']);将任务推入队列,由后台Worker进程执行,避免阻塞主线程。五、并发与负载均衡
pm.max_children:子进程最大数量,根据服务器内存调整,如pm.max_children = 50(每进程约占用100MB内存,则50进程占用5GB))、Nginx的worker_connections(每个进程的最大连接数,如worker_connections 1024),增加并发连接数;使用异步I/O(如Swoole扩展)替代传统同步模式,提升高并发下的吞吐量。upstream模块实现负载均衡,将请求分发到多个应用服务器(例如:upstream backend { server 192.168.1.1:80; server 192.168.1.2:80; }),提升系统整体并发处理能力;配合Keepalived实现高可用(VIP漂移),避免单点故障。六、监控与维护
runtime/cache目录)、日志文件(runtime/log目录),释放服务器空间;使用监控工具(如Prometheus+Grafana)监控服务器CPU、内存、磁盘使用率,以及应用响应时间、数据库查询性能,及时发现并解决瓶颈;通过New Relic、Datadog等APM工具分析代码性能,定位慢请求。