用途:面向 PHP 应用的性能优化,覆盖字节码缓存、JIT、数据库访问、应用缓存、数据结构选择与代码微优化,并给出监控与分析方法。
主要能力:
- OPcache:生产配置建议(opcache.enable、memory_consumption、interned_strings_buffer、max_accelerated_files、validate_timestamps=0、save_comments、optimization_level),开发配置(validate_timestamps=1、revalidate_freq=0),以及 preloading(PHP 7.4+,opcache.preload、opcache.preload_user,用 opcache_compile_file() 预编译)。
- JIT(PHP 8.0+):opcache.jit=tracing 或 function,opcache.jit_buffer_size=128M,说明 CPU 密集型收益大、I/O 密集型收益小,可用 opcache_get_status() 查看 jit.buffer_free。
- 监控与管理:opcache_get_status() 查看命中率(目标 >98%)、浪费内存、cache_full、oom_restarts;opcache_reset() 重置;opcache_invalidate() 失效单文件;文件缓存用于共享主机/CLI。
- 数据库(PDO):推荐 ERRMODE_EXCEPTION、FETCH_ASSOC、EMULATE_PREPARES=false、DSN 中 charset=utf8mb4;命名参数、事务、避免大结果集用 fetchAll()。
- 缓存:Redis/Memcached 的 cache-aside 模式、写时失效、TTL、缓存击穿处理;分层为 OPcache、应用数据缓存、HTTP 反向代理。
- SPL 数据结构:SplFixedArray、SplStack、SplQueue、SplPriorityQueue、SplHeap、SplDoublyLinkedList、SplObjectStorage 的适用场景。
- 微优化:isset 替代 array_key_exists、array_flip 后 isset 替代重复 in_array、循环外缓存 count、str_contains/str_starts_with、直接类型转换、$a[] 替代 array_push、=== 替代 ==、循环内避免 array_merge、字符串用数组收集后 implode。
- 内存与循环:memory_get_usage/peak_usage、unset、gc_collect_cycles、生成器、流式读文件;foreach 引用后 unset。
- 分析工具:opcache_get_status()、memory_get_peak_usage()、Xdebug、Blackfire、Tideways;强调先分析再优化。
使用方式:按资料中的 ini 指令与代码片段配置 OPcache/JIT、PDO 与缓存;部署时因 validate_timestamps=0 需手动重置缓存。
限制:资料未提供具体版本兼容范围、性能提升数值、价格或平台支持信息;预加载仅适用于 FPM/mod_php,不适用于一次性 CLI 脚本,且预加载代码需重启服务器才能更新。