CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
PHP 进阶/课时/性能与运维
RawBlame
课时目录12 节

PHP 进阶

  1. 01PHP 进阶地图
  2. 02语法与数据结构
  3. 03Web 与超全局变量
  4. 04安全基础
  5. 05OOP 深入
  6. 06现代 PHP 工程
  7. 07数据库与 ORM
  8. 08性能与运维
  9. 09测试与静态分析
  10. 10框架生态
  11. 11集成与 CLI
  12. 12综合练习

性能与运维

缓存、OPcache、连接池、php-fpm。

30 分钟

性能与运维

PHP 请求模型是短生命周期,优化重点在 缓存、OPcache 与 php-fpm 进程管理。前置 php-essentials;路径 /roadmaps/php。

学习目标

  • 用 OPcache 与对象缓存减少重复计算
  • 理解 php-fpm 进程池与连接管理
  • 建立基本性能排查思路

OPcache

php.ini 中启用:

opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000

OPcache 把编译后的字节码缓存在内存,避免每次请求重新解析 PHP 文件。部署后若代码不更新,可关闭 opcache.validate_timestamps 进一步提升性能。

应用层缓存

<?php
declare(strict_types=1);

function getTrackStats(PDO $pdo, Redis $redis, string $slug): array {
    $key = "track:stats:$slug";
    $cached = $redis->get($key);
    if ($cached !== false) {
        return json_decode($cached, true);
    }
    $stmt = $pdo->prepare('SELECT COUNT(*) AS cnt FROM lessons WHERE track_slug = ?');
    $stmt->execute([$slug]);
    $stats = $stmt->fetch(PDO::FETCH_ASSOC);
    $redis->setex($key, 300, json_encode($stats));
    return $stats;
}

热点查询用 Redis / Memcached;设置合理 TTL,更新数据时主动失效。

php-fpm

; www.conf
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php-fpm 管理 PHP 工作进程;max_children 过大耗尽内存,过小排队延迟。监控 slowlog 定位慢请求。

连接池注意

PHP 传统模型无跨请求连接池;每个请求打开 PDO 连接,请求结束关闭。高并发时用 ProxySQL 或持久连接(PDO::ATTR_PERSISTENT,慎用)。

练习

  • 确认 OPcache 已启用:php -i | findstr opcache
  • 给 track 统计加 Redis 缓存,更新课时时清除 key
  • 阅读 php-fpm slowlog 配置并模拟一条慢查询

小结

OPcache 加速解释、Redis 缓存热点、php-fpm 管进程。 下一课测试与静态分析。

加载本节练习…
← 上一课
数据库与 ORM
下一课 →测试与静态分析