Instalação
Tipos Resource
Instalação/Configuração
PHP Manual

## 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.

São duas decisões principais que você deve fazer. A primeira, a quantidade de memória compartilhada que você quer alocar para o APC, e a segunda, se você quer que o APC verifique se um arquivo foi modificado em cada requisição. As duas diretivas do arquivo php.ini envolvidas aqui são apc.shm_size e apc.stat. Leia as seções sobre essas duas diretivas com muita atenção.

Uma vez que você tiver um servidor operando, você deve copiar o script apc.php que vem com a extensão para algum lugar no seu DocumentRoot e carregue-o no seu navegador. Ele fornece uma visão detalhada sobre o que está acontecendo com o cache. Se você tiver a extensão GD habilitada no PHP, ele até gerará gráficos bonitinhos. Primeira coisa a ser verificada é se ele está de fato cacheando arquivos. Presumindo que está funcionando, você deve prestar atenção para o número Cache full count na esquerda. Isso te diz o número de vezes que o cache foi preenchido e precisou limpar à força todas as entradas que não foram acessados nos últimos segundos. O tempo varia dependendo da diretiva apc.ttl. Você deve configurar seu cache para minimizar esse número. Se você estiver com o cache cheio constantemente, o resultado disso afetará a performance. Você deve ou alocar mais memória para o APC ou usar os filtros (apc.filters) para cachear menos scripts.

Opções de Configuração de APC
Nome | Valor Padrão | Alterável | Changelog
--- | --- | --- | ---
apc.enabled | "1" | PHP_INI_SYSTEM | PHP_INI_SYSTEM no APC 2. PHP_INI_ALL no APC <= 3.0.12.
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "30" | PHP_INI_SYSTEM |
apc.optimization | "0" | PHP_INI_ALL | PHP_INI_SYSTEM no APC 2. Removido no APC 3.0.13.
apc.num_files_hint | "1000" | PHP_INI_SYSTEM |
apc.user_entries_hint | "4096" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.0.
apc.ttl | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.0.
apc.user_ttl | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.0.
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.cache_by_default | "1" | PHP_INI_ALL | PHP_INI_SYSTEM no APC <= 3.0.12p. Disponível desde o APC 3.0.0.
apc.filters | NULL | PHP_INI_SYSTEM |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.slam_defense | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.0.
apc.file_update_protection | "2" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.6.
apc.enable_cli | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.7.
apc.max_file_size | "1M" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.7.
apc.stat | "1" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.10.
apc.write_lock | "1" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.11.
apc.report_autofilter | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.11.
apc.include_once_override | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.12.
apc.rfc1867 | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.13.
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM |
apc.localcache | "0" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.14.
apc.localcache.size | "512" | PHP_INI_SYSTEM | Disponível desde o APC 3.0.14.

Para mais detalhes e definições das constantes PHP_INI_*, veja Diretivas do arquivo php.ini.

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.user_entries_hint` integer

  Assim como apc.num_files_hint, dá uma "dica" sobre o número de variáveis de usuários distintos são armazenados. Dê o valor zero ou omit se não tiver certeza.

`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.user_ttl` integer

  O número de segundos que uma entrada de cache do usuário fica ociosa em cache se a posição que ele está ocupando for necessária. Atribuir zero significa que seu cache pode, potencialmente, ficar cheio de entradas não usadas 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 Xs). 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.

  Obsoleto por apc.write_lock.

`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.

`apc.max_file_size` integer

  Previne que arquivos maiores que esse valor sejam cacheados. O padrão é 1M.

`apc.stat` integer

  Tenha cuidado ao mudar essa configuração. O padrão para ela é On (ligado) o que significa que APC verificará o script em cada requisição para certificar-se que ele não foi modificado. Se ele foi modificado, ele recompilará e cacheará a nova versão. Se você desligar essa configuração, essa verificação não será feita. Isso significa que para que mudanças sejam ativadas, você precisará reiniciar o seu servidor web. Em um servidor de produção, onde você raramente modifica o código, desligar essa configuração pode significar um aumento de performance.

  Essa opção aplica-se também para arquivos requeridos ou incluídos, mas perceba que se você estiver usando caminhos relativos para os includes (qualquer caminho que não começa com / no Unix ), o APC precisa chegar para indentificar univocamente o arquivo. Se você usar o caminho absoluto, o APC pode pular o teste e usar o caminho absoluto como identificador único do arquivo.

`apc.write_lock` boolean

  Em servidores muito ocupados, quando você inicializa o servidor, ou quando muitos arquivos são modificados, você pode acabar com todos os processos tentando compilar e cachear os mesmos arquivos. Com write_lock habilitado, apenas um processo por vez tentará compilar um script não cacheado enquanto os outros processos executarão sem cache, ao invés de esperar por sua vez para poder escrever o arquivo.

`apc.report_autofilter` boolean

  Registra qualquer script que são excluídos automaticamente do cache por problemas de binding prévio ou tardio.

`apc.include_once_override` boolean

  Otimiza chamadas à include_once() e require_once() e evita o custo das chamadas de sistema usadas.

`apc.rfc1867` boolean

  RFC1867 File Upload Progress só está disponível se você compilou o APC com o PHP 5.2.0 ou posterior. Quando habilitado, qualquer upload de arquivo que inclui um campo chamado APC_UPLOAD_PROGRESS antes do campo arquivo em um formulário de upload fará com que o APC crie uma entrada no cache upload_key onde key é o valor da entrada APC_UPLOAD_PROGRESS do formulário.

  Perceba que o rastrear uploads de arquivos não é threadsafe até agora, então novos uploads que acontecem enquanto um anterior ainda está sendo executado desabilitará o rastreamento do anterior.

  Exemplo #1 An apc.rfc1867 example

  `<?php
  print_r(apc_fetch("upload_$_POST[APC_UPLOAD_PROGRESS]"));
  ?>`

  O exemplo acima irá imprimir algo similar a:

      Array
      (
          [total] => 1142543
          [current] => 1142543
          [rate] => 1828068.8
          [filename] => test
          [name] => file
          [temp_filename] => /tmp/php8F
          [cancel_upload] => 0
          [done] => 1
      )

`apc.rfc1867_prefix` string

  Chave do prefixo para usar por entrada de cache do usuário gerado pela funcionalidade de progresso de upload rfc1867.

`apc.rfc1867_name` string

  Especifica o escondido nome de entrada de formulário que ativa o progresso de upload do APC e especifica o sufixo da chave de cache do usuário.

`apc.rfc1867_freq` string

  A freqüência de atualização que deve ser feita para a entrada de cache do usuário para o progresso do upload. Isto pode ser obtido do formulário de uma porcentagem do total do tamanho do arquivo em bytes opcionalmente sufixado com 'k', 'm', ou 'g' por kilobytes, megabytes, ou gigabytes respectivamente (case insensitive). Definindo para 0 atualizações serão feitas sempre que possível, que pode causar lentidão no upload.

`apc.localcache` boolean

  Isso permite um shadow-cache sem lock no processo local que reduz contenção de locks quando o cache está sendo escrito.

`apc.localcache.size` integer

  O tamanho do shadow-cache do processo local, deve ser um valor suficientemente grande, aproximadamente metade de apc.num_files_hint.

Instalação
Tipos Resource
Instalação/Configuração
PHP Manual