OPcache guarda bytecode PHP compilado para evitar repetir parsing e compilação em cada requisição. Em produção isso reduz trabalho, mas introduz uma pergunta operacional: quando o código no disco muda, como o pool PHP passa a executar a nova versão?
Conheça a configuração efetiva
Confira opcache.enable, opcache.validate_timestamps, opcache.revalidate_freq, tamanho do cache e comportamento específico de CLI e FPM. Alguns ambientes verificam timestamp periodicamente; outros desativam essa verificação e dependem de invalidação explícita. O Drush pode usar outra configuração e não representa automaticamente o processo web.
Não presuma que opcache_reset() executado por CLI limpa o cache compartilhado pelo FPM: pools e processos podem ter espaços separados. Um endpoint público para limpar OPcache é um risco de segurança e não deve existir sem autenticação e restrição operacional fortes.
Use releases imutáveis e troca coordenada
Um padrão de diretórios release/ e symlink current reduz atualizações parciais de arquivos. Ainda assim, confirme a estratégia de reload ou reinício gracioso do PHP-FPM depois da troca e antes de reabrir o tráfego. Em ambientes com múltiplos nós, cada pool precisa convergir e o health check deve identificar a versão servida.
Não combine código novo com configuração ou schema incompatível enquanto processos antigos ainda atendem requisições. Faça alterações compatíveis em etapas, aguarde a drenagem dos workers e só então remova estruturas antigas.
Diagnostique, não aumente limites às cegas
Monitore hit rate, memória usada, desperdício, reinícios e erros de cache. Um cache cheio pode causar recompilações; aumentar opcache.memory_consumption sem entender a quantidade de scripts apenas desloca o limite. Meça uma carga real e confira se o problema é cache, I/O, consultas ou processos antigos.
Inclua no smoke test um identificador de release servido por cada nó e valide-o após o deploy. Assim fica claro se o visitante recebeu código atual, em vez de inferir pelo horário do arquivo. OPcache é rápido quando a publicação trata cache como parte do ciclo de vida do release.