Manual do PHP
Anterior |  | Próxima

# III. Alternative PHP Cache

# Introdução

O Cache Alternativo do PHP (APC) é um cache livre e aberto para o PHP. Foi desenvolvido para prover um framework livre, aberto e robusto para cache e otimização do código intermediário do PHP.

# Instalação

Esta estensão PECL não vem compilada com o PHP.

Informações para a instalação desta extensão PECL podem ser encontradas no manual no capitulo entitulado Instalação de extensões PECL. Informações adicionais como novas versões, downloads, arquivos fontes, manutenções, e um Changelog, podem ser obtidos aqui: http://pecl.php.net/package/apc.

Você pode baixar esta extensão PECL DLL a apartir de downloads PHP ou em http://snaps.php.net/.

> Nota: No Windows, APC espera que `c:\tmp` exista, e que o servidor web possa escrever lá.

> Nota: Para documentação mais aprofundada, altamente técnica, veja o arquivo de notas técnicas fornecida pelo desenvolvedor .

# Configurações em execução

O comportamento dessas funções podem ser modificado pelas configurações do `php.ini`.

Embora as configurações padrões do APC são suficientes para muitas instalações, usuários sérios devem considerar alterar os seguintes parâmetros.

Tabela 1. Opções de Configuração de APC

Nome | Valor Padrão | Alterável | Changelog
--- | --- | --- | ---
apc.enabled | "1" | PHP_INI_ALL |
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "30" | PHP_INI_SYSTEM |
apc.optimization | "0" | PHP_INI_ALL |
apc.num_files_hint | "1000" | PHP_INI_SYSTEM |
apc.ttl | "0" | PHP_INI_SYSTEM |
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.cache_by_default | "1" | PHP_INI_SYSTEM |
apc.filters | NULL | PHP_INI_SYSTEM |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.slam_defense | "0" | PHP_INI_SYSTEM |
apc.file_update_protection | "2" | PHP_INI_SYSTEM |
apc.enable_cli | "0" | PHP_INI_SYSTEM | > APC 3.0.6

Para mais detalhes e definições das constantes PHP_INI_*, veja Apêndice H.

Breve descrição das diretivas de configuração.

`apc.enabled` boolean

  `apc.enabled` pode ser configurado para 0 para desabilitar APC. Isso é primeiramente útil quando APC for compilado estaticamente no PHP, já que não existe outra maneira de desabilitá-lo (quando compilado como um DSO, a linha `extension` do arquivo `php.ini` pode ser comentada).

`apc.shm_segments` integer

  O número de segmentos de memória compartilhada para alocar para o cache do compilador. Se APC estiver ficando sem memória compartilhada mas você já configurou `apc.shm_size` para o valor mais alto que seu sistema permite, tente aumentar esse valor.

`apc.shm_size` integer

  O tamanho de cada segmento de memória compartilhado em MB. Por padrão, alguns sistemas (incluindo a maioria dos BSDs) tem limites muito baixos no tamanho de um segmento de memória compartilhada.

`apc.optimization` integer

  O nível de otimização. Zero disabilita o otimizador, e valores mais algos usam otimizações mais agressivas. Espere melhoras muito modestas de velocidade. Isso é experimental.

`apc.num_files_hint` integer

  Uma "dica" sobra o número de arquivos-fonte distintos serão incluídos ou requisitados no seu servidor web. Configura para zero ou omita o valor se não tiver certeza; Essa configuração é útil principalmente para sites que tem milhares de arquivos-fonte.

`apc.ttl` integer

  O número de segundos que uma entrada no cache é permitida a ficar ociosa em uma posição, caso essa posição for necessária para outra entrada. Deixando o valor zero significa que o cache pode potencialmente encher de entradas paradas enquanto novas entradas não serão guardadas.

`apc.gc_ttl` integer

  O número de segundos que uma entrada do cache pode ficar na lista do coletor de lixo (garbage-collection). Esse valor prove uma segurança caso um processo do servidor morra enquanto executando um arquivo-fonte cacheado; Se o arquivo-fonte for modificado, a memória alocada para a versão antiga não será reclamada até que TTL seja alcançado. Configure para zero para desabilitar essa funcionalidade.

`apc.cache_by_default` boolean

  Ligado por padrão, mas pode ser desligado e usado em conjunto com `apc.filters` positivos para que arquivos só sejam guardados se validados por um filtro positivo.

`apc.filters` string

  Uma lista separada por vírgulas de expressões regulares extendidas POSIX. Se qualquer padrão bater com o nome do arquivo-fonte, o arquivo não será guardado. Perceba que o nome de arquivo usado para comparação é o que é passado para a include/require, não o caminho absoluto. Se o primeiro caracter da expressão é um `+`, então a expressão será aditiva no sentido que quaisquer arquivos que baterem com a expressão serão guardados, e se o primeiro caracter for `-`, então qualquer arquivo que não bater com o padrão não será guardado. O caso `-` é o padrão, então pode ser deixado de fora.

`apc.mmap_file_mask` string

  Se compilado com suporte à MMAP usando `--enable-mmap` essa é a máscara de arquivo em estilo mktemp a ser passada para o módulo mmap para determinar se sua região mapeada de memória será guardada em arquivo ou memória compartilhada. Para guardar em arquivo, configure para um valor como `/tmp/apc.XXXXXX` (exatamente 6 `X`s). Para usar shm_open/mmap no estilo POSIX ponha um `.shm` em algum lugar da sua máscara. Por exemplo, `/apc.shm.XXXXXX` Você também pode configura para `/dev/zero` usar a interface `/dev/zero` do kernel para memória mapeada de forma anônima. Deixar em branco forçará mapeamento anônimo.

`apc.slam_defense` integer

  Em servidores muito ocupados sempre que você inicializar o servidor ou modificar arquivos, você pode criar uma "race condition" de muitos processos todos tentando guardar o mesmo arquivo ao mesmo tempo. Essa opção configura a percentagem de processos que não tentarão guardar um arquivo que ainda não esteja no cache. Ou pense como sendo a probabilidade de um único processo não guardar o arquivo. Por exemplo, configurar `apc.slam_defense` para `75` significaria que existe uma chance de 75% que o processo não guardará um arquivo em cache. Então, quanto maior o valor, maior a defesa contra uma "race condition". Configurando isso para `0` desabilita essa funcionalidade.

`apc.file_update_protection` integer

  Quando você modifica um arquivo em um servidor web, você realmente devia fazê-lo de uma maneira atômica. Isso é, escreva para um arquivo temporário e renomeie o arquivo (`mv`) para sua posição permanente quando estiver pronto. Muito editores de texto, cp, tar e outros programas não fazem isso. Isso significa que existe uma chance de que um arquivo é acessado (e guardado em cache) enquanto ele ainda está sendo escrito. Essa configuração `apc.file_update_protection` coloca um atraso ao fazer o cache de arquivos recém-criados. O valor padrão é 2 segundos, o que significa que se o horário de modificação do arquivo (`mtime`) tiver menos do que 2 segundos de diferença do tempo atual, ele não será guarado. O infeliz que acessar esse arquivo incompleto ainda verá coisas estranhas, mas pelo menos não persistirá. Se você tiver certeza que você sempre atualiza seus arquivos atomicamente usando algo como rsync que faz isso corretamente, você pode desligar essa proteção ao atribuir o valor de 0. Se você tiver um sistema que é carregado com IO, csuando algum procedimento de atualização que leva mais do que dois segundos, você pode querer aumentar esse valor um pouco.

`apc.enable_cli` integer

  Principalmente para teste e depuração. Ligando essa diretiva habilita o APC para a versão CLI do PHP. Normalmente você não iria querer criar, popular e destrui o cache do APC a cada requisição CLI, mas em vários cenários de teste isso é muito útil ser capaz de habilitar APC para a versão CLI facilmente.

# Tipos Resource

Esta extensão não possui nenhum tipo resource.

# Constantes pré-definidas

Esta extensão não possui nenhuma constante.

Anterior | Principal | Próxima
virtual | Acima | apc_add