在 Ubuntu 上“优化 ThinkPHP”通常可以从系统环境、PHP、Web 服务器、ThinkPHP 自身、缓存与数据库几个方面来做。下面按实战方式给你一套常见且有效的优化方案(以 ThinkPHP 6 / 8 为主,5.1 也基本适用)。
编辑 /etc/sysctl.conf:
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
执行:
sysctl -p
ulimit -n 65535
永久生效:
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
sudo apt install php-fpm php-cli php-mysql php-redis php-opcache php-mbstring php-xml php-curl
编辑 php.ini(如 /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 ; 生产环境
重启:
systemctl restart php8.2-fpm
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
/etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 100
pm.start_servers = 20
pm.min_spare_servers = 10
pm.max_spare_servers = 30
.env
APP_DEBUG = false
php think optimize:route
php think optimize:config
php think optimize:autoload
.env
CACHE_DRIVER = redis
SESSION_DRIVER = redis
sudo apt install redis-server
ThinkPHP 配置:
'cache' => [
'default' => 'redis',
'stores' => [
'redis' => [
'type' => 'redis',
'host' => '127.0.0.1',
],
],
],
composer require topthink/think-swoole
php think swoole start
适合 API / 高并发。
top
htop
php-fpm -t
nginx -t
redis-cli ping
如果你愿意,可以告诉我:
我可以给你一套更精准的优化参数。