发布于2026-07-16 阅读(0)
扫一扫,手机访问
先说最核心的一环:OPcache。它是PHP官方的一个扩展,思路很简单——把编译好的字节码缓存起来,省得每次请求都重新解析编译。在Debian上安装只需一条命令:sudo apt install php-opcache(PHP 5.5以上版本自带)。装完之后,关键在配置。打开php.ini,找到opcache段,下面这几个参数值得仔细调:

[opcache]zend_extension=opcache.soopcache.enable=1opcache.memory_consumption=128# 缓存内存大小(MB),根据服务器内存调整opcache.interned_strings_buffer=8# 内部字符串缓冲区大小(MB)opcache.max_accelerated_files=4000# 最大加速文件数,建议设置为项目中PHP文件总数的1.5倍opcache.revalidate_freq=60# 文件修改检查频率(秒),生产环境可设为0(禁用检查)或较高值
别忘了重启PHP服务让配置生效:sudo systemctl restart php-fpm。
如果你用的是PHP-FPM(强烈推荐),那进程管理这块就是性能的关键。调到合适了,服务器资源利用率会好很多;调错了,要么白白浪费内存,要么请求排队等到崩溃。编辑/etc/php/{version}/fpm/pool.d/www.conf,重点关注以下参数:
pm = dynamic# 动态进程管理模式(推荐)pm.max_children = 50# 最大子进程数,根据服务器内存计算(如1GB内存可设为20-30)pm.start_servers = 5# 启动时的子进程数pm.min_spare_servers = 5# 最小空闲子进程数pm.max_spare_servers = 10# 最大空闲子进程数request_terminate_timeout = 300# 请求超时时间(秒),防止单个脚本占用过多资源
修改完后同样重启PHP-FPM:sudo systemctl restart php-fpm。
优化不只是运维的事,代码写得好不好,对性能影响也很大。几点常见建议:
function add(int $a, int $b): int {return $a + $b;}strlen(),不如提前把结果存到变量里。array_map()、strpos()这些,底层是用C实现的,自己手写循环基本比不过。yield代替一次性加载全部数据,内存占用可以降一个数量级。例如:function getLargeData() {for ($i = 0; $i < 1000000; $i++) {yield $i;}}数据库经常是瓶颈所在,这一点跑不掉。几个方向:
p:前缀可以让MySQLi复用连接,减少握手的开销:$mysqli = new mysqli('p:localhost', 'user', 'password', 'database');CREATE INDEX idx_column ON table_name(column_name);),避免SELECT *,只取需要的字段,能少用JOIN就少用。缓存是性能翻跟斗,没有之一。两种常见做法:
$redis = new Redis();$redis->connect('127.0.0.1', 6379);$data = $redis->get('cache_key');if (!$data) {$data = fetchDataFromDatabase();$redis->set('cache_key', $data, 3600);// 缓存1小时}Nginx这边也有一些顺手就能做的小优化:
gzip on;gzip_comp_level 6;gzip_min_length 256;gzip_proxied any;gzip_vary on;keepalive_timeout 65;keepalive_requests 100;unix:/run/php/php8.2-fpm.sock;光调不测,等于白忙。得让数据说话:
top、htop、vmstat,看看CPU、内存、磁盘I/O有没有异常,再反过来调整配置。php.ini中开启错误日志(log_errors = On,error_log = /var/log/php_errors.log),很多性能问题其实都能从日志里找到线索。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8