Content · Web Development · PHP

Diagnosing OPcache Configuration and Cache Hits

Compare OPcache configuration and hit counters in the SAPI serving real requests.

1 views Published Oct 17, 2026 Updated Oct 17, 2026 Admin

Compare OPcache configuration and hit counters in the SAPI serving real requests.

What It Does and When to Use It


Example FPM INI directives; apply changes only in the runtime that serves requests. OPcache caches compiled opcodes, JIT may optimize CPU-intensive PHP, while APCu caches application-owned values.

Requirements, Inputs and Expected Behavior


Confirm the runtime, extension, environment variables, and permissions before running the examples in production. CLI status is often different or disabled; the first run after reset cannot show a meaningful hit rate.

Example 1: Basic Operation


Example FPM INI directives; apply changes only in the runtime that serves requests.

opcache.enable=1
opcache.validate_timestamps=1
opcache.revalidate_freq=2

Example 2: Behavior and Validation


Read active OPcache configuration instead of assuming the edited INI file was loaded.

<?php
$config = opcache_get_configuration();
foreach (['opcache.enable','opcache.memory_consumption','opcache.validate_timestamps'] as $name) { echo $name, ': ',var_export($config['directives'][$name] ?? null,true),PHP_EOL; }

Practical Example: Application Use


Check cache statistics in the target FPM worker; CLI counters are not representative.

<?php
$status = opcache_get_status(false);
if (!$status) { echo 'OPcache disabled for this SAPI'; exit; }
$stats=$status['opcache_statistics'];
echo 'Cached: ', $stats['num_cached_scripts']??0, ' Hits: ', $stats['hits']??0;

Important Behavior and Edge Cases


The second example highlights: Read active OPcache configuration instead of assuming the edited INI file was loaded. The practical example adds: Check cache statistics in the target FPM worker; CLI counters are not representative.

Comparison with Related Approaches


ApproachWhat changes
OPcache, JIT and APCuOPcache caches compiled opcodes, JIT may optimize CPU-intensive PHP, while APCu caches application-owned values.
Choosing safelyProfile application response times and memory under representative traffic before tuning.

Common Beginner Mistakes


MistakeCorrect approach
Assuming a cache is shared across multiple serversConfirm process- and host-level cache scope; use a distributed store when needed.
Never invalidating cached dataSet a TTL or versioned cache key and test release-time invalidation.
Skipping operational constraintsCLI status is often different or disabled; the first run after reset cannot show a meaningful hit rate.

Key Takeaways


  • Compare OPcache configuration and hit counters in the SAPI serving real requests.
  • Check cache statistics in the target FPM worker; CLI counters are not representative.
  • Profile application response times and memory under representative traffic before tuning.
Share this resourceSend this page to someone who may find it useful.