O comportamento destas funções é afetado pelas configurações do php.ini.
Onde uma configuração deve ser definida.
Aqui está uma breve explicação das diretivas de configuração.
opcache.enable
bool
opcache.enable não pode ser
habilitada em tempo de execução através de ini_set(), ela só pode
ser desabilitada. Tentar ativá-lo em um script gerará um aviso.
opcache.enable_cli
bool
opcache.memory_consumption
int
"8",
que é aplicado se um valor menor for definido.
opcache.interned_strings_buffer
int
Nota: Antes do PHP 8.4.0, o valor máximo era de 4095 megabytes para todas as arquiteturas.
opcache.max_accelerated_files
int
{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
que é maior ou igual ao valor configurado. O valor mínimo é 200. O valor máximo
é 1.000.000.
Valores fora desta faixa são fixados na faixa permitida.
opcache.max_wasted_percentage
int
"50",
que é aplicado se um valor maior for definido.
opcache.use_cwd
bool
opcache.validate_timestamps
bool
Se ativado, o OPcache verificará os scripts atualizados a cada opcache.revalidate_freq segundos. Quando esta diretiva é desativada, você deve redefinir o OPcache manualmente via opcache_reset(), opcache_invalidate() ou reiniciando o servidor Web para que as alterações no sistema de arquivos entrem em vigor.
Nota: O OPcache ainda pode validar o carimbo de data e hora de um arquivo durante o tempo de compilação se as opções opcache.file_update_protection ou opcache.max_file_size estiverem definidas com valores diferentes de zero.
opcache.revalidate_freq
int
0 resultará na verificação de atualizações do OPcache em
cada solicitação.
Esta diretiva de configuração será ignorada se
opcache.validate_timestamps
estiver desativado.
opcache.revalidate_path
bool
opcache.save_comments
bool
opcache.fast_shutdown
bool
opcache.enable_file_override
bool
opcache.optimization_level
int
0x7FFEBFFF, que habilita todas as
otimizações seguras. Desabilitar otimizações ou habilitar otimizações inseguras
é útil na maioria das vezes para depurar/desenvolver o otimizador.
Cada bit da máscara habilita um passo específico da otimização:
| Bit | Nome do Passo | Descrição | Padrão |
|---|---|---|---|
| 0 | PASS_1 | Otimizações simples de olho mágico | Ligado |
| 1 | PASS_2 | Não utilizado (mesclado ao PASS_1) | Ligado |
| 2 | PASS_3 | Otimização de salto simples | Ligado |
| 3 | PASS_4 | Otimização de chamadas | Ligado |
| 4 | PASS_5 | Otimização baseada em grafo de fluxo de controle | Ligado |
| 5 | PASS_6 | Otimização baseada em análise de fluxo de dados | Ligado |
| 6 | PASS_7 | Se o grafo de chamadas deve ser usado para otimizações baseadas em SSA. | Ligado |
| 7 | PASS_8 | Propagação esparsa de constantes condicionais | Ligado |
| 8 | PASS_9 | Otimização de variáveis temporárias | Ligado |
| 9 | PASS_10 | Remoção de opcodes NOP | Ligado |
| 10 | PASS_11 | Compactação literal | Ligado |
| 11 | PASS_12 | Pré-calcular o tamanho da pilha de chamadas | Ligado |
| 12 | PASS_13 | Remoção de variáveis não utilizadas | Ligado |
| 13 | PASS_14 | Eliminação de código morto | Ligado |
| 14 | PASS_15 | Coletar e substituir declarações constantes (inseguro) | Desligado |
| 15 | PASS_16 | Inlining de função trivial (parte da otimização de chamadas) | Ligado |
| 16 | (Flag) | Ignorar a possibilidade de sobrecarga do operador (inseguro) | Desligado |
Nota: Otimizações Seguras versus Inseguras
Otimizações Seguras (habilitadas por padrão) preservam o comportamento exato do código PHP enquanto melhora o desempenho. Elas incluem eliminação de código morto, a redução de constantes e a otimização de saltos. Otimizações Inseguras (desabilitadas por padrão) podem alterar o comportamento em casos extremos:
- Bit 14: Coletando constantes. As constantes são substituídas no momento da compilação, ignorando a ordem de declaração do momento da execução:
<?php
echo getA(); // Resultado: "hello" em vez de lançar um Error
const A = "hello";
function getA() { return A; }- Bit 16: Ignorando a sobrecarga do operador. Inseguro ao usar classes com
do_operation(ex.: GMP, BCMath) em operações aritméticas. Com declarações de tipo, o otimizador pode aplicar as mesmas otimizações de forma segura.
opcache.inherited_hack
bool
opcache.dups_fix
bool
opcache.blacklist_filename
string
; Corresponde a um arquivo específico. /var/www/broken.php ; Um prefixo que corresponde a todos os arquivos que começam com x. /var/www/x ; Uma correspondência curinga. /var/www/*-broken.php
opcache.max_file_size
int
0, todos os arquivos serão armazenados em cache.
opcache.consistency_checks
int
Nota: Desativado a partir do 8.1.18 e 8.2.5. Removido a partir do PHP 8.3.0.
opcache.force_restart_timeout
int
opcache.error_log
string
stderr e resultará no envio de logs para
erro padrão (que será o log de erro do servidor Web na maioria dos casos).
opcache.log_verbosity_level
int
opcache.record_warnings
bool
opcache.preferred_memory_model
string
mmap, shm,
posix e win32.
opcache.protect_memory
bool
opcache.mmap_base
string
opcache.restrict_api
string
""
significa nenhuma restrição.
opcache.file_update_protection
string
0.
Isso permitirá que os arquivos sejam armazenados em cache imediatamente.
opcache.huge_code_pages
bool
opcache.lockfile_path
string
opcache.opt_debug_level
string
opcache.file_cache
string
"" desativa o cache baseado em arquivo.
opcache.file_cache_only
bool
Nota: Antes do PHP 8.1.0, desabilitar esta diretiva com um cache de arquivo já preenchido era necessário para limpar manualmente o cache de arquivo.
opcache.file_cache_consistency_checks
bool
opcache.file_cache_fallback
bool
opcache.file_cache_only=1 para um determinado processo que
falhou ao se reconectar à memória compartilhada (somente para Windows). É necessário habilitar
explicitamente o cache de arquivos.
Desativar esta opção de configuração pode impedir que os processos sejam iniciados e, portanto, é desencorajado.
opcache.validate_permission
bool
opcache.validate_root
bool
opcache.preload
string
Nota: O pré-carregamento não é suportado no Windows.
opcache.preload_user
string
root.
A partir do PHP 8.3.0, esta diretiva não precisa ser definida para permitir pré-carregamento quando
executado como root ao usar o CLI SAPI ou o SAPI phpdbg.
opcache.cache_id
string
No Windows, todos os processos executando o mesmo PHP SAPI na mesma conta de usuário com o mesmo ID de cache compartilham uma única instância do OPcache. O valor do cache ID pode ser escolhido livremente.
Para IIS, diferentes pools de aplicativos podem ter sua própria instância OPcache
usando a variável de ambiente APP_POOL_ID como
opcache.cache_id.
opcache.jit
string|int
disable: Completamente desativado, não pode ser ativado em tempo de execução.off: Desativado, mas pode ser ativado em tempo de execução.tracing/on:Use rastreamento JIT.
Ativado por padrão e recomendado para a maioria dos usuários.
function: Use function JIT.
Para uso avançado, esta opção aceita um CRTO inteiro de 4 dígitos, onde os dígitos significam:
C (CPU-sinalizadores de otimização específicos)0: Desative a otimização específica da CPU.1: Habilite o uso do AVX, se a CPU for compatível.R (alocação de registro)0: Não execute alocação de registro.1: Execute a alocação de registrador local de bloco.2: Execute a alocação global de registradores.T (gatilho(trigger))0: Compile todas as funções no carregamento do script.1: Compile funções na primeira execução.2: Funções de perfil no primeiro pedido e compilação das funções mais
quentes depois.
3: Crie perfis em tempo real e compile funções importantes.4: Atualmente sem uso.5: Use tracing JIT. Crie perfis em tempo real e
compile rastreamentos para segmentos de código dinâmico.
O (nível de otimização)0: Sem JIT.1: JIT mínimo (chamada de manipuladores de VM padrão).2: Manipuladores de VM embutidos.3: Use inferência de tipo.4: Usar gráfico de chamada.5: Otimize todo o script."tracing" corresponde a CRTO = 1254,
o modo "function" corresponde a CRTO = 1205.
opcache.jit_buffer_size
int
opcache.jit_debug
int
ZEND_JIT_DEBUG).
opcache.jit_bisect_limit
int
opcache.jit=1215. Veja mais na opção opcache.jit.
opcache.jit_prof_threshold
float
opcache.jit_max_root_traces
int
opcache.jit_max_side_traces
int
opcache.jit_max_exit_counters
int
opcache.jit_hot_loop
int
[0,255]; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado.
O valor 0 desabilitará o JIT para rastrear ou compilar quaisquer laços.
opcache.jit_hot_func
int
[0,255]; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado.
O valor 0 desabilitará o JIT para rastrear e compilar quaisquer funções.
opcache.jit_hot_return
int
[0,255]; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado.
O valor 0 desabilitará o JIT para rastrear e compilar quaisquer retornos.
opcache.jit_hot_side_exit
int
[0,255]; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado.
O valor zero 0 desabilitará o JIT para rastrear e compilar quaisquer saídas secundárias.
opcache.jit_blacklist_root_trace
int
opcache.jit_blacklist_side_trace
int
opcache.jit_max_loop_unrolls
int
opcache.jit_max_recursive_calls
int
opcache.jit_max_recursive_returns
int
opcache.jit_max_polymorphic_calls
int