温馨提示×

linux thinkphp怎么优化

小樊
47
2026-10-18 21:24:22
栏目: 编程语言

在 Linux + ThinkPHP 环境下进行优化,通常可以从 服务器、PHP、ThinkPHP 框架、数据库、缓存、代码 几个层面来做。下面按实用优先级给你一份优化清单。


一、Linux 服务器层面优化

1. 使用合适的 Web 服务器

  • Nginx + PHP-FPM(推荐,性能优于 Apache)
  • 静态资源交由 Nginx 处理,PHP 只处理动态请求

Nginx 示例:

location ~ \.php$ {
    fastcgi_pass   unix:/run/php/php8.1-fpm.sock;
    include        fastcgi_params;
}

2. 开启 OPcache(非常重要)

sudo apt install php-opcache

php.ini 配置:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60

✅ 可提升 30%~50% 性能


3. 调整 PHP-FPM

www.conf:

pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20

根据内存调整:

free -h

二、ThinkPHP 框架优化

1. 开启生产模式

.env

APP_DEBUG = false

2. 路由缓存(TP6 / TP8)

php think optimize:route

3. 配置缓存

php think optimize:config

4. 类库映射(TP5)

php think optimize:autoload

5. 使用 Composer 优化

composer install --optimize-autoloader --no-dev

三、数据库优化(MySQL)

1. 开启慢查询日志

slow_query_log = 1
long_query_time = 1

2. 给常用查询字段加索引

ALTER TABLE user ADD INDEX idx_status (status);

3. ThinkPHP 中使用:

  • field() 减少字段
  • limit() 限制数量
  • 避免 select() 全表
User::where('status',1)->field('id,name')->limit(10)->select();

4. 使用连接池(Swoole / Workerman)

高并发场景:

  • ThinkPHP + Swoole
  • Hyperf(TP 风格)

四、缓存优化

1. 使用 Redis 缓存

.env

CACHE_TYPE=redis
REDIS_HOST=127.0.0.1
REDIS_PORT=6379

2. 页面 / 接口缓存

Cache::remember('user_list', 60, function () {
    return User::select();
});

3. 静态资源缓存

Nginx:

location ~* \.(js|css|png|jpg)$ {
    expires 30d;
}

五、代码层面优化

  • 避免循环中查数据库
  • 使用 with() 预加载关联
  • 合理使用事务
  • 日志级别生产环境设为 error
User::with('profile')->select();

六、性能监控工具

  • top / htop
  • php-fpm status
  • mysqltuner
  • blackfire
  • xhprof

七、典型优化收益对比

优化项 提升效果
OPcache ⭐⭐⭐⭐
路由/配置缓存 ⭐⭐⭐
Redis 缓存 ⭐⭐⭐⭐
数据库索引 ⭐⭐⭐⭐
Swoole ⭐⭐⭐⭐⭐

如果你愿意,可以告诉我:

  • ✅ ThinkPHP 版本(5 / 6 / 8)
  • ✅ 并发量(日 PV / QPS)
  • ✅ 当前服务器配置

我可以给你 针对性优化方案或配置文件示例。

0 踩