温馨提示×

ubuntu中thinkphp为何访问慢

小樊
42
2026-10-01 15:38:22
栏目: 编程语言

在 Ubuntu 上 ThinkPHP 访问慢,通常不是单一原因,而是环境、框架配置和代码共同作用的结果。下面按最常见 → 较常见 → 排查方法给你系统梳理。


一、最常见原因(80% 问题在这里)

1️⃣ 未开启 OPCache(PHP 性能核心)

ThinkPHP 是 PHP 框架,没开 OPCache 会非常慢。

检查:

php -m | grep opcache

如果没有:

sudo apt install php-opcache
sudo systemctl restart php-fpm   # 或 apache2

php.ini 建议:

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

✅ 这是最重要的一步


2️⃣ 开发模式(APP_DEBUG = true)

ThinkPHP 默认调试模式很慢。

检查 .env:

APP_DEBUG = false

或 config/app.php:

'app_debug' => false,

✅ 生产环境必须关


3️⃣ 路由未缓存(TP6 / TP8)

每次请求都扫描路由文件会很慢。

php think route:cache

清除:

php think route:clear

4️⃣ 配置未缓存

php think config:cache

二、Ubuntu 环境相关问题

5️⃣ DNS 解析慢(最常见隐蔽原因)

PHP 或 MySQL 在连接时会做 反向 DNS 解析。

解决方式:

MySQL 慢

/etc/mysql/my.cnf 或 mysqld.cnf:

[mysqld]
skip-name-resolve

PHP gethostbyaddr

在 php.ini:

disable_functions = gethostbyaddr

6️⃣ 使用 localhost 而不是 127.0.0.1

MySQL 配置:

DB_HOST=127.0.0.1

❌ localhost 可能走 socket 或 DNS,慢


7️⃣ PHP-FPM 配置不合理

/etc/php/*/fpm/pool.d/www.conf

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

重启:

sudo systemctl restart php-fpm

三、ThinkPHP 代码层面

8️⃣ 每次请求都连外部服务

  • 发邮件
  • 调用第三方 API
  • 微信/支付宝接口

✅ 必须异步(队列)


9️⃣ 日志级别太低

config/log.php

'level' => ['error', 'sql'],

不要记录所有 debug 日志。


四、快速自查清单(1 分钟)

# 1. OPCache 是否开启
php -m | grep opcache

# 2. 调试是否关闭
grep APP_DEBUG .env

# 3. 路由缓存
php think route:cache

# 4. 配置缓存
php think config:cache

# 5. 数据库 host
grep DB_HOST .env

五、如果你愿意,我可以更精准帮你

你可以补充:

  • ThinkPHP 版本(5.1 / 6.0 / 8.0)
  • PHP 版本
  • Web 服务(Nginx / Apache)
  • 是本地还是服务器
  • 首次访问慢,还是每次都慢

我可以直接给你一份最优配置模板。

0 踩