在 Ubuntu 上优化 ThinkPHP(无论是 5.x 还是 6.x / 8.x)性能,一般可以从 系统层、PHP 层、ThinkPHP 层、缓存与数据库、Web 服务器 几个方面入手。下面给你一套比较实战的优化方案。
比 Apache 更适合 ThinkPHP 高并发。
server {
listen 80;
server_name example.com;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
✅ 重点:
publictry_files编辑 PHP 配置:
sudo vim /etc/php/8.1/fcli/php.ini
# 或 fpm
sudo vim /etc/php/8.1/fpm/php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.validate_timestamps=0 # 生产环境
重启 PHP:
sudo systemctl restart php8.1-fpm
.env
APP_DEBUG = false
php think optimize:route
php think optimize:config
php think optimize:autoload
❌ 错误:
Db::name('user')->where(...)->find();
✅ 推荐:
public function __construct(User $user)
{
$this->user = $user;
}
.env
CACHE_TYPE=redis
CACHE_HOST=127.0.0.1
CACHE_PORT=6379
安装 Redis:
sudo apt install redis-server
SESSION_DRIVER=redis
Db::name('user')->cache(3600)->select();
SHOW VARIABLES LIKE 'slow_query_log';
ALTER TABLE user ADD INDEX idx_status (status);
如果你用 ThinkPHP + Swoole:
'pool' => [
'database' => true
]
composer install --optimize-autoloader --no-dev
推荐:
composer require topthink/think-swoole
php think swoole
性能可提升 5~10 倍
✅ Ubuntu 22.04
✅ Nginx
✅ PHP 8.2 + OPcache
✅ Redis
✅ ThinkPHP 8
✅ APP_DEBUG=false
✅ 路由 + 配置缓存
如果你愿意,可以告诉我:
我可以给你 针对性更强的优化方案。