Aqui está uma breve explicação das
diretivas de configuração.
-
opcache.enable
bool
-
Habilita o cache opcode. Quando desabilitado, o código não é otimizado ou
armazenado em cache. A configuração 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
-
Ativa o cache opcode para a versão CLI do PHP.
-
opcache.memory_consumption
int
-
O tamanho do armazenamento de memória compartilhada usado pelo OPcache, em megabytes.
O valor mínimo permitido é "8"
,
que é aplicado se um valor menor for definido.
-
opcache.interned_strings_buffer
int
-
A quantidade de memória usada para armazenar strings internas, em megabytes.
-
opcache.max_accelerated_files
int
-
O número máximo de chaves (e, portanto, scripts) na tabela de hash do OPcache.
O valor real usado será o primeiro número no conjunto de
números primos
{ 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
-
A porcentagem máxima de memória desperdiçada que é permitida antes de uma reinicialização
ser planejada, se houver memória livre insuficiente.
O valor máximo permitido é "50"
,
que é aplicado se um valor maior for definido.
-
opcache.use_cwd
bool
-
Se ativado, o OPcache anexa o diretório de trabalho atual à chave de script,
eliminando assim possíveis colisões entre arquivos com o mesmo nome de base.
Desativar esta diretiva melhora o desempenho, mas pode interromper os
aplicativos existentes.
-
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
-
Com que frequência verificar carimbos de data/hora do script para atualizações, em segundos.
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
-
Se desativado, os arquivos em cache existentes usando o mesmo
include_path serão reutilizados.
Assim, se um arquivo com o mesmo nome estiver em outro lugar no include_path,
ele não será encontrado.
-
Se desativado, todos os comentários da documentação serão descartados
do cache do opcode para reduzir o tamanho do código otimizado. Desativar esta
diretiva de configuração pode interromper aplicativos e frameworks que
dependem da análise de comentários para anotações, incluindo Doctrine, Zend Framework 2
e PHPUnit.
-
opcache.fast_shutdown
bool
-
Se ativado, uma sequência de desligamento rápido é usada que não libera cada
bloco alocado, mas depende do gerenciador de memória do Zend Engine para
desalocar todo o conjunto de variáveis de solicitação em massa.
Esta diretiva foi removida no PHP 7.2.0. Uma variante da sequência
de desligamento rápido foi integrada ao PHP e será usada automaticamente,
se possível.
-
opcache.enable_file_override
bool
-
Quando ativado, o cache opcode será verificado para saber se um arquivo
já foi armazenado em cache quando file_exists(),
is_file() e is_readable() são
chamados. Isso pode aumentar o desempenho em aplicativos que verificam
a existência e legibilidade de scripts PHP, mas corre o risco de retornar dados desatualizados
se
opcache.validate_timestamps
estiver desabilitado.
-
opcache.optimization_level
int
-
Uma máscara de bits que controla quais passos de otimização são executados.
O padrão é aplicar todas as otimizações seguras.
Alterar o padrão é mais útil para depurar/desenvolver o otimizador
(consulte também opcache.opt_debug_level).
-
opcache.inherited_hack
bool
-
Esta diretiva de configuração é ignorada.
-
opcache.dups_fix
bool
-
Este hack só deve ser ativado para contornar os erros
"Cannot redeclare class".
-
opcache.blacklist_filename
string
-
A localização do arquivo de blacklist do OPcache. Um arquivo de blacklist
é um arquivo de texto contendo os nomes dos arquivos que não devem ser acelerados, um por
linha. Curingas(*) são permitidos e prefixos também podem ser fornecidos.
As linhas iniciadas com ponto e vírgula são ignoradas como comentários.
Um arquivo de blacklist simples pode ter a seguinte aparência:
-
opcache.max_file_size
int
-
O tamanho máximo do arquivo que será armazenado em cache, em bytes. Se for
0
, todos os arquivos serão armazenados em cache.
-
opcache.consistency_checks
int
-
Se diferente de zero, o OPcache verificará a soma de verificação do cache a cada N solicitações,
onde N é o valor desta diretiva de configuração. Isso só deve ser
ativado durante a depuração, pois prejudicará o desempenho.
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
-
O tempo de espera para iniciar uma reinicialização agendada se o cache
não estiver ativo, em segundos. Se o tempo limite for atingido, o OPcache assumirá
que algo está errado e eliminará os processos que mantêm bloqueios no cache
para permitir uma reinicialização.
Se
opcache.log_verbosity_level
for definido como 2 ou superior, um aviso será registrado no log de erros quando
isso ocorrer.
Esta diretiva não é suportada no Windows.
-
opcache.error_log
string
-
O log de erros para erros do OPcache. Uma string vazia é tratada da mesma forma que
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
-
O nível de verbosidade do log. Por padrão, apenas erros fatais (nível 0) e
erros (nível 1) são registrados. Outros níveis disponíveis são avisos (nível
2), mensagens informativas (nível 3) e mensagens de depuração (nível 4).
-
opcache.record_warnings
bool
-
Se ativado, o OPcache registrará avisos em tempo de compilação e os reproduzirá na
próxima inclusão, mesmo que seja servido do cache.
-
opcache.preferred_memory_model
string
-
O modelo de memória preferencial para uso do OPcache. Se deixado em branco, o OPcache
escolherá o modelo mais adequado, que é o comportamento correto
em praticamente todos os casos.
Os valores possíveis incluem mmap
, shm
,
posix
and win32
.
-
opcache.protect_memory
bool
-
Protege a memória compartilhada contra gravações inesperadas durante a execução de scripts.
Isso é útil apenas para depuração interna.
-
opcache.mmap_base
string
-
A base usada para segmentos de memória compartilhada no Windows. Todos os processos PHP
precisam mapear a memória compartilhada no mesmo espaço de endereço. O uso desta
diretiva permite que os erros "Unable to reattach to base address" sejam
corrigidos.
-
opcache.restrict_api
string
-
Permite chamar funções da API do OPcache apenas de scripts PHP cujo caminho
é iniciado a partir da string especificada. O padrão "" significa nenhuma restrição.
-
opcache.file_update_protection
string
-
Impede o armazenamento em cache de arquivos que tenham menos de um determinado número de segundos desde a última modificação.
Isso protege contra o armazenamento em cache de arquivos que tenham sido atualizados de forma incompleta. Caso todas as
atualizações forem atômicas, o desempenho pode ser aumentado definindo isso como 0
.
Isso permitirá que os arquivos sejam armazenados em cache imediatamente.
-
opcache.huge_code_pages
bool
-
Ativa ou desativa a cópia do código PHP (segmento de texto) em PÁGINAS ENORMES.
Isso deve melhorar o desempenho, mas requer configuração de sistema operacional apropriada.
Disponível no Linux a partir do PHP 7.0.0 e no FreeBSD a partir do PHP 7.4.0.
-
opcache.lockfile_path
string
-
Caminho absoluto usado para armazenar arquivos de bloqueio compartilhados (somente para * nix)
-
opcache.opt_debug_level
string
-
Produz opcode dumps para depurar diferentes estágios de otimizações.
0x10000 produzirá opcodes conforme o compilador os produziu antes que qualquer otimização ocorra,
enquanto 0x20000 produzirá códigos otimizados.
-
opcache.file_cache
string
-
Ativa e define o diretório de cache de segundo nível. Ele deve melhorar
o desempenho quando a memória SHM estiver cheia, na reinicialização do servidor ou
na reinicialização do SHM. O padrão "" desativa o cache baseado em arquivo.
-
opcache.file_cache_only
bool
-
Ativa ou desativa o armazenamento em cache opcode na memória compartilhada.
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
-
Ativa ou desativa a validação da soma de verificação quando o script é carregado do cache do arquivo.
-
opcache.file_cache_fallback
bool
-
Implica opcache.file_cache_only=1 para um determinado processo que falhou ao se
reconectar à memória compartilhada (somente para Windows). Cache de arquivo explicitamente
habilitado é necessário.
Cuidado
Desativar esta opção de configuração pode impedir que os processos sejam iniciados
e, portanto, é desencorajado.
-
opcache.validate_permission
bool
-
Valida as permissões do arquivo em cache no usuário atual.
-
opcache.validate_root
bool
-
Evita colisões de nomes em ambientes chroot'ed. Isso deve ser ativado em
todos os ambientes chroot'ed para impedir o acesso a arquivos fora do chroot.
-
opcache.preload
string
-
Especifica um script PHP que será compilado e executado na inicialização do servidor
e que pode pré-carregar outros arquivos, seja por includeing ou usando
a função opcache_compile_file(). Todas as entidades (por exemplo,
funções e classes) definidas nesses arquivos estarão disponíveis para solicitações prontas
para uso, até que o servidor seja desligado.
Nota:
O pré-carregamento não é suportado no Windows.
-
opcache.preload_user
string
-
Permite que o pré-carregamento seja executado como o usuário do sistema especificado. Isso é útil
para servidores que inicializam como root antes de alternar para um usuário de sistema sem privilégios.
O pré-carregamento como root não é permitido por padrão por motivos de segurança,
a menos que esta diretiva seja explicitamente definida como root
.
-
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.
Dica
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
-
Para uso típico, esta opção aceita um dos quatro valores de string:
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.
O modo "tracing"
corresponde a CRTO = 1254
,
o modo "function"
corresponde a CRTO = 1205
.
-
opcache.jit_buffer_size
int
-
A quantidade de memória compartilhada a ser reservada para o código JIT compilado. Um valor zero desativa o JIT.
Quando um int é usado, o
valor é medido em bytes. A notação abreviada, como descrita
nesta FAQ, também pode ser usada.
-
opcache.jit_debug
int
-
Uma máscara de bits especificando qual saída de depuração JIT habilitar.
Para possíveis valores, consulte
» zend_jit.h
(procure por definições de macro começando com ZEND_JIT_DEBUG
).
-
opcache.jit_bisect_limit
int
-
Opção de depuração que desativa a compilação JIT após a compilação de um determinado número de funções.
Isso pode ser útil para dividir a origem de um erro de compilação JIT. Observação: esta opção só funciona
quando o gatilho JIT é definido como 0 (compilar no carregamento do script) ou 1 (compilar na primeira execução),
por exemplo, opcache.jit=1215
. Veja mais na opção opcache.jit.
-
opcache.jit_prof_threshold
float
-
Ao usar o modo de trigger "profile on first request", esse limite determina se uma
função é considerada ativa. O número de chamadas para a função dividido pelo número de chamadas
para todas as funções deve estar acima do limite. Por exemplo, um limite de 0,005 significa que as
funções que representam mais de 0,5% de todas as chamadas serão compiladas por JIT.
-
opcache.jit_max_root_traces
int
-
Número máximo de root traces. O root trace é um fluxo de execução que percorre primeiro um
caminho através do código, que é uma unidade de compilação JIT. O JIT não compilará o novo código se atingir esse limite.
-
opcache.jit_max_side_traces
int
-
Número máximo de side traces que um root trace pode ter. O side trace é outro fluxo de execução
que não segue o caminho do root trace compilado. Os sides traces pertencentes ao mesmo
root trace não serão compilados se atingirem esse limite.
-
opcache.jit_max_exit_counters
int
-
Número máximo de contadores de saída de side trace. Isso limita o número total de side traces
que podem existir, em todos os root traces.
-
opcache.jit_hot_loop
int
-
Depois de quantas iterações um loop é considerado ativo.
O intervalo de valor válido é [0,255]
; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado. Especialmente, um valor zero
desabilitará o JIT para rastrear e compilar quaisquer loops.
-
opcache.jit_hot_func
int
-
Depois de quantas chamadas uma função é considerada "quente".
O intervalo de valor válido é [0,255]
; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado. Especialmente, um valor zero
desabilitará o JIT para rastrear e compilar quaisquer funções.
-
opcache.jit_hot_return
int
-
Depois de quantos retornos, um retorno é considerado "quente".
O intervalo de valor válido é [0,255]
; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado. Especialmente, um valor zero
desabilitará o JIT para rastrear e compilar quaisquer retornos.
-
opcache.jit_hot_side_exit
int
-
Depois de quantas saídas uma saída lateral é considerada "quente".
O intervalo de valor válido é [0,255]
; para qualquer configuração fora desse intervalo,
por exemplo, -1 ou 256, o valor padrão será usado. Especialmente, um valor zero
desabilitará o JIT para rastrear e compilar quaisquer saídas secundárias.
-
opcache.jit_blacklist_root_trace
int
-
Número máximo de vezes que a compilação de um root trace é tentada antes de ser incluída na blacklist.
-
opcache.jit_blacklist_side_trace
int
-
Número máximo de vezes que a compilação de um side trace é tentada antes de ser incluída na blacklist.
-
opcache.jit_max_loop_unrolls
int
-
Número máximo de tentativas de resolver um loop em um traço lateral,
tentando alcançar o root trace e fechar o loop externo.
-
opcache.jit_max_recursive_calls
int
-
Número máximo de loops de chamada recursiva.
-
opcache.jit_max_recursive_returns
int
-
Número máximo de loops de retorno recursivos.
-
opcache.jit_max_polymorphic_calls
int
-
Número máximo de tentativas de chamadas polimórficas (dinâmicas ou de método) embutidas.
As chamadas acima desse limite são tratadas como megamórficas e não são embutidas.