Content · Web Development · PHP

Enabling and Tuning OPcache

Enable OPcache, size shared memory and validate changes with observed cache usage.

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

Enable OPcache, size shared memory and validate changes with observed cache usage.

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. Production restarts and invalidation rules are part of the deployment plan.

Example 1: Basic Operation


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

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
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 constraintsProduction restarts and invalidation rules are part of the deployment plan.

Key Takeaways


  • Enable OPcache, size shared memory and validate changes with observed cache usage.
  • 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.