<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Alternative PHP Cache</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="Referência das Funções" HREF="funcref.html"><LINK REL="PREVIOUS" TITLE="virtual" HREF="function.virtual.html"><LINK REL="NEXT" TITLE="apc_add" HREF="function.apc-add.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="reference" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="function.virtual.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="function.apc-add.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="reference" ><A NAME="ref.apc" ></A ><DIV CLASS="TITLEPAGE" ><H1 CLASS="title" >III. Alternative PHP Cache</H1 ><DIV CLASS="PARTINTRO" ><A NAME="AEN8571" ></A ><DIV CLASS="section" ><H1 CLASS="section" ><A NAME="apc.intro" >Introdução</A ></H1 ><P > 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. </P ></DIV ><DIV CLASS="section" ><H1 CLASS="section" ><A NAME="apc.installation" >Instalação</A ></H1 ><P > Esta estensão <A HREF="http://pecl.php.net" TARGET="_top" >PECL</A > não vem compilada com o PHP. </P ><P > Informações para a instalação desta extensão PECL podem ser encontradas no manual no capitulo entitulado <A HREF="install.pecl.html" >Instalação de extensões PECL</A >. Informações adicionais como novas versões, downloads, arquivos fontes, manutenções, e um Changelog, podem ser obtidos aqui: <A HREF="http://pecl.php.net/package/apc" TARGET="_top" >http://pecl.php.net/package/apc</A >. </P ><P > Você pode baixar esta extensão <ACRONYM CLASS="acronym" >PECL</ACRONYM > <ACRONYM CLASS="acronym" >DLL</ACRONYM > a apartir de <A HREF="http://www.php.net/downloads.php" TARGET="_top" > downloads PHP</A > ou em <A HREF="http://snaps.php.net/" TARGET="_top" > http://snaps.php.net/</A >. </P ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > No Windows, APC espera que <TT CLASS="literal" >c:\tmp</TT > exista, e que o servidor web possa escrever lá. </P ></BLOCKQUOTE ></DIV ><DIV CLASS="note" ><BLOCKQUOTE CLASS="note" ><P ><B >Nota: </B > Para documentação mais aprofundada, altamente técnica, veja o <A HREF="http://cvs.php.net/viewvc.cgi/pecl/apc/TECHNOTES.txt?view=co" TARGET="_top" > arquivo de notas técnicas fornecida pelo desenvolvedor </A >. </P ></BLOCKQUOTE ></DIV ></DIV ><DIV CLASS="section" ><H1 CLASS="section" ><A NAME="apc.configuration" >Configurações em execução</A ></H1 ><P > O comportamento dessas funções podem ser modificado pelas configurações do <TT CLASS="filename" >php.ini</TT >. </P ><P > 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. </P ><P > <DIV CLASS="table" ><A NAME="AEN8599" ></A ><P ><B >Tabela 1. Opções de Configuração de APC</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><COL><COL><THEAD ><TR ><TH >Nome</TH ><TH >Valor Padrão</TH ><TH >Alterável</TH ><TH >Changelog</TH ></TR ></THEAD ><TBODY ><TR ><TD >apc.enabled</TD ><TD >"1"</TD ><TD >PHP_INI_ALL</TD ><TD > </TD ></TR ><TR ><TD >apc.shm_segments</TD ><TD >"1"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.shm_size</TD ><TD >"30"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.optimization</TD ><TD >"0"</TD ><TD >PHP_INI_ALL</TD ><TD > </TD ></TR ><TR ><TD >apc.num_files_hint</TD ><TD >"1000"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.ttl</TD ><TD >"0"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.gc_ttl</TD ><TD >"3600"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.cache_by_default</TD ><TD >"1"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.filters</TD ><TD >NULL</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.mmap_file_mask</TD ><TD >NULL</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.slam_defense</TD ><TD >"0"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.file_update_protection</TD ><TD >"2"</TD ><TD >PHP_INI_SYSTEM</TD ><TD > </TD ></TR ><TR ><TD >apc.enable_cli</TD ><TD >"0"</TD ><TD >PHP_INI_SYSTEM</TD ><TD >> APC 3.0.6</TD ></TR ></TBODY ></TABLE ></DIV > Para mais detalhes e definições das constantes PHP_INI_*, veja <A HREF="ini.html" >Apêndice H</A >. </P ><P >Breve descrição das diretivas de configuração.</P ><P > <P ></P ><DIV CLASS="variablelist" ><DL ><DT ><A NAME="ini.apc.enabled" ></A ><CODE CLASS="parameter" >apc.enabled</CODE > <A HREF="language.types.boolean.html" ><B CLASS="type" >boolean</B ></A ></DT ><DD ><P > <TT CLASS="literal" >apc.enabled</TT > 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 <TT CLASS="literal" >extension</TT > do arquivo <TT CLASS="literal" >php.ini</TT > pode ser comentada). </P ></DD ><DT ><A NAME="ini.apc.shm-segments" ></A ><CODE CLASS="parameter" >apc.shm_segments</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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 <TT CLASS="literal" >apc.shm_size</TT > para o valor mais alto que seu sistema permite, tente aumentar esse valor. </P ></DD ><DT ><A NAME="ini.apc.shm-size" ></A ><CODE CLASS="parameter" >apc.shm_size</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ><DT ><A NAME="ini.apc.optimization" ></A ><CODE CLASS="parameter" >apc.optimization</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ><DT ><A NAME="ini.apc.num-files-hint" ></A ><CODE CLASS="parameter" >apc.num_files_hint</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ><DT ><A NAME="ini.apc.ttl" ></A ><CODE CLASS="parameter" >apc.ttl</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ><DT ><A NAME="ini.apc.gc-ttl" ></A ><CODE CLASS="parameter" >apc.gc_ttl</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ><DT ><A NAME="ini.apc.cache-by-default" ></A ><CODE CLASS="parameter" >apc.cache_by_default</CODE > <A HREF="language.types.boolean.html" ><B CLASS="type" >boolean</B ></A ></DT ><DD ><P > Ligado por padrão, mas pode ser desligado e usado em conjunto com <TT CLASS="literal" >apc.filters</TT > positivos para que arquivos só sejam guardados se validados por um filtro positivo. </P ></DD ><DT ><A NAME="ini.apc.filters" ></A ><CODE CLASS="parameter" >apc.filters</CODE > <A HREF="language.types.string.html" ><B CLASS="type" >string</B ></A ></DT ><DD ><P > 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 <TT CLASS="literal" >+</TT >, 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 <TT CLASS="literal" >-</TT >, então qualquer arquivo que não bater com o padrão não será guardado. O caso <TT CLASS="literal" >-</TT > é o padrão, então pode ser deixado de fora. </P ></DD ><DT ><A NAME="ini.apc.mmap-file-mask" ></A ><CODE CLASS="parameter" >apc.mmap_file_mask</CODE > <A HREF="language.types.string.html" ><B CLASS="type" >string</B ></A ></DT ><DD ><P > Se compilado com suporte à MMAP usando <TT CLASS="literal" >--enable-mmap</TT > 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 <TT CLASS="literal" >/tmp/apc.XXXXXX</TT > (exatamente 6 <TT CLASS="literal" >X</TT >s). Para usar shm_open/mmap no estilo POSIX ponha um <TT CLASS="literal" >.shm</TT > em algum lugar da sua máscara. Por exemplo, <TT CLASS="literal" >/apc.shm.XXXXXX</TT > Você também pode configura para <TT CLASS="literal" >/dev/zero</TT > usar a interface <TT CLASS="literal" >/dev/zero</TT > do kernel para memória mapeada de forma anônima. Deixar em branco forçará mapeamento anônimo. </P ></DD ><DT ><A NAME="ini.apc.slam-defense" ></A ><CODE CLASS="parameter" >apc.slam_defense</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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 <TT CLASS="literal" >apc.slam_defense</TT > para <TT CLASS="literal" >75</TT > 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 <TT CLASS="literal" >0</TT > desabilita essa funcionalidade. </P ></DD ><DT ><A NAME="ini.apc.file-update-protection" ></A ><CODE CLASS="parameter" >apc.file_update_protection</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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 (<TT CLASS="literal" >mv</TT >) 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 <TT CLASS="literal" >apc.file_update_protection</TT > 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 (<TT CLASS="literal" >mtime</TT >) 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. </P ></DD ><DT ><A NAME="ini.apc.enable-cli" ></A ><CODE CLASS="parameter" >apc.enable_cli</CODE > <A HREF="language.types.integer.html" ><B CLASS="type" >integer</B ></A ></DT ><DD ><P > 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. </P ></DD ></DL ></DIV > </P ></DIV ><DIV CLASS="section" ><H1 CLASS="section" ><A NAME="apc.resources" >Tipos Resource</A ></H1 ><P >Esta extensão não possui nenhum tipo resource.</P ></DIV ><DIV CLASS="section" ><H1 CLASS="section" ><A NAME="apc.constants" >Constantes pré-definidas</A ></H1 ><P >Esta extensão não possui nenhuma constante.</P ></DIV ></DIV ><DIV CLASS="TOC" ><DL ><DT ><B >Índice</B ></DT ><DT ><A HREF="function.apc-add.html" >apc_add</A > -- Cache a variable in the data store (only if it's not stored) </DT ><DT ><A HREF="function.apc-cache-info.html" >apc_cache_info</A > -- Retorna informação guardada (e meta-dados) de registros do APC </DT ><DT ><A HREF="function.apc-clear-cache.html" >apc_clear_cache</A > -- Limpa o cache do APC. </DT ><DT ><A HREF="function.apc-define-constants.html" >apc_define_constants</A > -- Define um conjunto de constantes para uso posterior e definição em massa </DT ><DT ><A HREF="function.apc-delete.html" >apc_delete</A > -- Remove uma variável guardado no cache. </DT ><DT ><A HREF="function.apc-fetch.html" >apc_fetch</A > -- Retorna uma variável guardado do cache </DT ><DT ><A HREF="function.apc-load-constants.html" >apc_load_constants</A > -- Carrega um conjunto de constantes do cache </DT ><DT ><A HREF="function.apc-sma-info.html" >apc_sma_info</A > -- Retorna informação sobre Alocação de Memória Compartilhada do APC. </DT ><DT ><A HREF="function.apc-store.html" >apc_store</A > -- Guarda uma variável no cache </DT ></DL ></DIV ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="function.virtual.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="function.apc-add.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >virtual</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="funcref.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >apc_add</TD ></TR ></TABLE ></DIV ></BODY ></HTML >