在 Ubuntu + ThinkPHP 环境下提升性能,可以从 系统层、PHP 层、ThinkPHP 层、数据库层、缓存层、架构层 多个方面入手。下面给你一套比较实用、可落地的优化方案。
ThinkPHP 6 / 8 对 PHP 8 支持很好,性能提升明显。
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.2 php8.2-fpm php8.2-cli
Nginx + PHP-FPM 性能远高于 Apache。
sudo apt install nginx php8.2-fpm
Nginx 示例配置(简化):
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
sudo apt install php8.2-opcache
/etc/php/8.2/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 # 生产环境
重启:
sudo systemctl restart php8.2-fpm
.env
APP_DEBUG = false
php think optimize:route
php think optimize:config
php think optimize:autoload
减少多应用加载开销。
sudo apt install redis-server
sudo apt install php8.2-redis
ThinkPHP 配置:
'cache' => [
'default' => 'redis',
'stores' => [
'redis' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
],
],
],
使用:
Cache::set('key', $data, 3600);
Db::name('user')->cache(60)->select();
普通 FPM 模式下,确保:
'params' => [
\PDO::ATTR_PERSISTENT => true,
],
EXPLAIN SELECT * FROM user WHERE email = 'a@b.com';
常见优化:
SELECT *id > ?'hostname' => ['192.168.1.1','192.168.1.2'],
'deploy' => 1,
gzip on;
gzip_types text/css application/javascript;
composer require topthink/think-swoole
优势:
composer require topthink/think-queue
将:
放到队列执行。
abab -n 1000 -c 100 http://localhost/
blackfirexhprof✅ 必做(性价比最高)
✅ 进阶
如果你愿意,可以告诉我:
我可以给你一套 针对你项目的精准优化方案。