From 909023c945dada7ef9e2dd7ae738009b2384c851 Mon Sep 17 00:00:00 2001 From: Leonardo Lara Rodrigues Date: Mon, 13 Nov 2023 14:14:06 -0300 Subject: [PATCH] Minor corrections to pull request #341 and initial translation of features/gc and features/dtrace (#343) * Minor corrections to pull request #341 * Initial translation of features/gc and features/dtrace * Update to language-snippets.ent * Update to language/errors.xml * Updates to language/predefined/attributes/* * Updates to outdated language/predefined/variables/* * Update to outdated files in install/windows/ * New translation of missing file security/sessions.xml * New translation of missing files in language/context * Update datetime.xml * New translation of missing files in datetime/ --------- Co-authored-by: LEONARDO LARA RODRIGUES --- features/dtrace.xml | 558 ++++++++++++++ features/gc.xml | 690 ++++++++++++++++++ install/windows/commandline.xml | 209 ++++++ install/windows/manual.xml | 103 +++ install/windows/recommended.xml | 111 +++ install/windows/tools.xml | 38 + install/windows/troubleshooting.xml | 42 ++ language-snippets.ent | 10 +- language/context/zip.xml | 106 +++ language/context/zlib.xml | 78 ++ language/errors.xml | 6 +- .../attributes/allowdynamicproperties.xml | 12 +- language/predefined/attributes/attribute.xml | 12 +- .../attributes/returntypewillchange.xml | 12 +- .../attributes/sensitiveparameter.xml | 12 +- .../variables/httpresponseheader.xml | 9 +- .../predefined/variables/superglobals.xml | 2 +- reference/datetime/dateerror.xml | 84 +++ reference/datetime/dateexception.xml | 82 +++ .../dateinvalidoperationexception.xml | 79 ++ .../datetime/dateinvalidtimezoneexception.xml | 72 ++ .../datemalformedintervalstringexception.xml | 72 ++ .../datemalformedperiodstringexception.xml | 72 ++ .../datetime/datemalformedstringexception.xml | 77 ++ reference/datetime/dateobjecterror.xml | 85 +++ .../dateperiod/createfromiso8601string.xml | 171 +++++ .../datetime/dateperiod/getdateinterval.xml | 86 +++ reference/datetime/dateperiod/getenddate.xml | 124 ++++ .../datetime/dateperiod/getrecurrences.xml | 105 +++ .../datetime/dateperiod/getstartdate.xml | 92 +++ reference/datetime/daterangeerror.xml | 82 +++ reference/datetime/datetime.xml | 2 +- reference/datetime/datetime/add.xml | 2 +- .../datetime/datetime/createfromimmutable.xml | 106 +++ .../datetime/datetime/createfrominterface.xml | 83 +++ reference/datetime/datetime/settimezone.xml | 2 +- .../datetimeimmutable/createfrominterface.xml | 83 +++ reference/datetime/examples.xml | 158 ++++ reference/datetime/formats.xml | 2 +- reference/datetime/functions/checkdate.xml | 10 +- .../functions/date-default-timezone-set.xml | 2 +- reference/datetime/functions/date-sunrise.xml | 17 + reference/datetime/functions/date-sunset.xml | 2 +- reference/datetime/functions/gmdate.xml | 2 +- reference/datetime/functions/localtime.xml | 10 + reference/datetime/functions/strftime.xml | 4 +- reference/datetime/functions/strtotime.xml | 7 +- reference/datetime/functions/time.xml | 4 +- reference/datetime/ini.xml | 3 +- security/sessions.xml | 34 + 50 files changed, 3760 insertions(+), 66 deletions(-) create mode 100644 features/dtrace.xml create mode 100644 features/gc.xml create mode 100644 install/windows/commandline.xml create mode 100644 install/windows/manual.xml create mode 100644 install/windows/recommended.xml create mode 100644 install/windows/tools.xml create mode 100644 install/windows/troubleshooting.xml create mode 100644 language/context/zip.xml create mode 100644 language/context/zlib.xml create mode 100644 reference/datetime/dateerror.xml create mode 100644 reference/datetime/dateexception.xml create mode 100644 reference/datetime/dateinvalidoperationexception.xml create mode 100644 reference/datetime/dateinvalidtimezoneexception.xml create mode 100644 reference/datetime/datemalformedintervalstringexception.xml create mode 100644 reference/datetime/datemalformedperiodstringexception.xml create mode 100644 reference/datetime/datemalformedstringexception.xml create mode 100644 reference/datetime/dateobjecterror.xml create mode 100644 reference/datetime/dateperiod/createfromiso8601string.xml create mode 100644 reference/datetime/dateperiod/getdateinterval.xml create mode 100644 reference/datetime/dateperiod/getenddate.xml create mode 100644 reference/datetime/dateperiod/getrecurrences.xml create mode 100644 reference/datetime/dateperiod/getstartdate.xml create mode 100644 reference/datetime/daterangeerror.xml create mode 100644 reference/datetime/datetime/createfromimmutable.xml create mode 100644 reference/datetime/datetime/createfrominterface.xml create mode 100644 reference/datetime/datetimeimmutable/createfrominterface.xml create mode 100644 reference/datetime/examples.xml create mode 100644 security/sessions.xml diff --git a/features/dtrace.xml b/features/dtrace.xml new file mode 100644 index 000000000..2eff61b78 --- /dev/null +++ b/features/dtrace.xml @@ -0,0 +1,558 @@ + + + + Instrumentação dimâmica DTrace + + + Introdução ao PHP e DTrace + + + DTrace é um framework de instrumentação com alta disponibilidade e pequena sobrecarga, + disponível em um número de plataformas incluindo Solaris, macOS, + Oracle Linux e BSD. DTrace pode instrumentar comportamento do sistema operacional + e execução de programa de usuário. Ele pode exibir valores de argumentos e ser + usado para inferir estatísticas de desempenho. Os sensores são monitorados pos scripts + criados pelo usuário escritos na linguagem própria do DTrace (D). Isto + permite uma análise eficiente de pontos de dados. + + + + Sensores PHP que não estão monitorados ativamente por um script + D do usuário não contêm código instrumentado, então não há + degradação de desempenho durante a execução normal da aplicação. + Sensores que estão sendo monitorados incorrem em uma sobrecarga pequena o suficiente + para permitir monitoramento pelo DTrace em sistemas ativos em fase de produção. + + + + PHP incorpora sensores com "Instrumentação Estaticamente Definida no Nível de Usuário" (USDT em inglês) + que são ativados em tempo de execução. Por exemplo, quando um script D + está monitorando o sensor de entrada de função do PHP, então + a cada momento que uma função do PHP é chamada, este sensor é disparado e + o código de ação do script D associado é executado. Este código de ação + poderia, por exemplo, imprimir argumentos de sensor como a localização do arquivo-fonte + da função PHP. Ou a ação poderia agregar dados como + o númedo de vezes que cada função é chamada. + + + + Apenas os sensores USDT do PHP são descritas aqui. Refira-se à literatura externa do Dtrace, + tanto geral quanto específica do sistema operacional, para entender como + o DTrace pode ser usado para instrumentar funções arbitrárias, e como ele pode ser + usado para instrumentar comportamento do sistema operacional. Note que nem todas as + características do DTrace estão disponíveis em todas as implementações. + + + + Os sensores estáticos do Dtrace no PHP podem alternativamente ser utilizados com a + ferramenta SystemTap de algumas distribuições Linux. + + + + + Usando PHP e DTrace + + O PHP pode ser configuracom com sensores estáticos do DTrace em plataformas que + suportam a Instrumentação Dinâmica do DTrace. + + + + Configurando o PHP para Sensores Estáticos DTrace + + + Refira-se à documentação externa específica da plataforma para habilitar + o suporte do DTrace no sistema operacional. Por exemplo, no Oracle Linux + inicialize um kernel UEK3 e rode os seguintes comandos: + + + + + + + + + Ao invés de usar chmod, pode-se alternativamente usar uma + regra de pacote ACL para limitar o acesso a um dispositivo para um usuário específico. + + + + Construa o PHP com o parâmetro de configuração --enable-dtrace: + + + + + + + + Isto habilita sensores estáticos no núcleo do PHP. Quaisquer extensões PHP + que fornecem seus próprios sensores devem ser construídas separadamente como + extensões compartilhadas. + + + + + Sensores Estáticos DTrace no Núcleo do PHP + + Os sensores estáticos a seguir estão disponíveis no PHP + + + + Nome do Sensor + Descrição do Sensor + Argumentos do Sensor + + + + + request-startup + Dispara quando uma requisição inicia. + char *file, char *request_uri, char *request_method + + + request-shutdown + Dispara quando uma requisição termina. + char *file, char *request_uri, char *request_method + + + compile-file-entry + Dispara quando a compilação de um script inicia. + char *compile_file, char *compile_file_translated + + + compile-file-return + Dispara quando a compilação de um script termina. + char *compile_file, char *compile_file_translated + + + execute-entry + Dispara quando um array de opcode está para ser executado. Por + exemplo, ele dispara em chamadas de função, de includes e em continuação + de geradores. + char *request_file, int lineno + + + execute-return + Dispara depois da execução de um array de opcode. + char *request_file, int lineno + + + function-entry + Dispara quando o motor do PHP entra em uma chamada de função ou método. + char *function_name, char *request_file, int lineno, char *classname, char *scope + + + function-return + Dispara quando o motor do PHP retorna de uma chamada de função ou método. + char *function_name, char *request_file, int lineno, char *classname, char *scope + + + exception-thrown + Dispara quando uma exceção é disparada. + char *classname + + + exception-caught + Dispara quando uma exceção é capturada. + char *classname + + + error + Dispara quando um erro ocorre, independente do nível de error_reporting. + char *errormsg, char *request_file, int lineno + + + +
+ + Extensões de PHP podem também conter sensores estáticos adicionais. + +
+ + + Listando os Sensores Estáticos DTrace no PHP + + Para listar os sensores disponíveis, inicie um processo PHP e então execute: + + + + + + + + + A saída será similar a: + + + + + + + + + Os valores da coluna Provider consistem de php mais o id + do processo PHP sendo executado. + + + + Se o servidor web Apache estiver rodando, o módulo poderia ser, por + exemplo, libphp5.so, e haveria + múltiplos blocos de listagens, um para cada processo Apache em execução. + + + + A coluna Function refere-se aos nomes das funções da implementação + interna do PHP, em C, onde cada fornecedor está localizado. + + + + Se um processo PHP não estiver em execução, então nenhum sensor PHP será mostrado. + + + + + Exemplo de DTrace com PHP + + Este exemplo mostra o básico da linguagem D de scripts DTrace. + + Arquivo <filename>all_probes.d</filename> para instrumentar todos os Sensores Estáticos PHP com DTrace + + + + + + + + Este script usa a opção -Z para a aplicação + dtrace, permitindo que ela seja executada quando não + há processo PHP em execução. Se esta opção fosse omitida, o script + iria terminar imediatamente porque ele saberia que nenhum dos sensores + a serem monitorados existiriam. + + + + O script instrumenta todos os pontos de sensores estáticos do núcleo do PHP durante toda a + duração de um script PHP em execução. Execute o script D: + + + + + + + + + Executa um script PHP ou aplicação. O script D de monitoramento terá + como saída os argumentos de cada um dos sensores quando for disparado. + + + + Quando o monitoramento estiver completo, o script D pode ser terminado com + CTRLC. + + + + Em máquinas com múltiplas CPUs, pode parecer que os sensor estão em ordem + não sequencial. Isto depende de qual CPU está processando os sensores, + e como as threads migram atráves dos CPUs. Mostrar os timestamps dos sensores + irá ajudar a reduzir a confusão, por exemplo: + + + + + + + + + + &reftitle.seealso; + + Instrumentação Dinâmica OCI8 e DTrace + + +
+ + + Usando SystemTap com Sensores Estáticos DTrace + + Em algumas distribuições Linux, o utilitário SystemTap de instrumentação pode ser + usado para instrumentar sensores estáticos do PHP. Isso está disponível no + PHP 5.4.20 e PHP 5.5. + + + + Instalando PHP com SystemTap + + + Instale o pacote de desenvolvimento do SystemTap, SDT: + + + + + + + + + Instale o PHP com os sensores DTrace habilitados: + + + + + + + + + + Listando os Sensores Estáticos com SystemTap + + + Os sensores estáticos em PHP podem ser listados usando stap: + + + + + + + + + A saída será: + + + + + + + + + + Exemplo de SystemTap com PHP + + + + <filename>all_probes.stp</filename> para instrumentação de todos os Sensores Estáticos do PHP com SystemTap + + + + + + + O script acima irá instrumentar todos os pontos de sensores estáticos do núcleo do PHP + durante toda a duração de um script PHP em execução: + + + + + + + + +
+ + \ No newline at end of file diff --git a/features/gc.xml b/features/gc.xml new file mode 100644 index 000000000..744a9ccae --- /dev/null +++ b/features/gc.xml @@ -0,0 +1,690 @@ + + + + Garbage Collection + + + Esta seção explica os méritos do novo mecanismo do Coletor de Lixo (também conhecido + como GC - Garbage Collector) que é parte do PHP 5.3. + + + + Básico sobre Contagem de Referência + + Uma variável PHP é armazenada em um contêiner chamado "zval". Um zval + contém, além do tipo e do valor da variável, dois bits adicionais de + informação. O primeiro é chamado de "is_ref" e é um valor booleano + que indica se a variável é parte de um "conjunto de referência" ou não. Com + este bit, o motor do PHP sabe como diferenciar entre variáveis normais + e referências. Como o PHP permite referências no nível do usuário, como as criadas pelo + operador & um contêiner zval também tem um mecanismo de contagem de referência + interno para otimizar o uso de memória. Esta segunda parte de informação + adicional, chamado "refcount", contém a quantidade de nomes de variáveis (também + chamadas de símbolos) que apontam para este contêiner. Todos os símbolos são armazenados em + uma tabela de símbolos, e existe uma por escopo. Existe um escopo para o + script principal (ou seja, aquele requisitado através do navegador), assim como um escopo + para cada função ou método. + + + Um contêiner zval é criado quando uma nova variável é criada com um valor + constante, como em: + + Criando um novo contêiner zval + + +]]> + + + + + Neste caso, o nome do símbolo, a, é criado no escopo atual, + e um novo contêiner de variável é criado com o tipo string e o valor + new string. O bit "is_ref" é por padrão definido para &false; porque nenhuma + referência no nível do usuário foi criada. O "refcount" é definidois para 1 já + que existe apenas um símbolo que faz uso deste contêiner de variável. Note + que referências (isto é, "is_ref" igual a &true;) com "refcount" igual a 1, são + tratadas como se elas não fossem referências (como se "is_ref" fosse &false;). Se o Xdebug estiver instalado, esta informação pode ser + mostrada chamando-se a função xdebug_debug_zval. + + + + Mostrando a informação zval + + +]]> + + &example.outputs; + + + + + + + Atribuindo esta variável a outro nome de variável irá aumentar o "refcount". + + + + Aumentando o "refcount" de um zval + + +]]> + + &example.outputs; + + + + + + + O refcount é 2 aqui, porque o mesmo contêiner de variável está ligado + tanto com a quanto com b. + O PHP é inteligente o suficiente para não copiar o contêiner real da + variável quando não for necessário. Contêineres são destruídos quando + o "refcount" atinge zero. O "refcount" é diminuído em uma unidade quando qualquer + símbolo ligado ao contêiner da variável deixa o escopo (ex.: quando a + função termina) ou quanto um símbolo perde a atribuição (ex.: chamando unset). + O exemplo a seguir mostra isso: + + + + Diminuindo o "refcount" de zval + + +]]> + + &example.outputs; + + + + + + + Se agora unset($a); for chamada, o contêiner da variável, incluindo o tipo + e o valor, serão removidos da memória. + + + + Tipos Compostos + + + As coisas ficam um pouco mais complexas com tipos compostos como arrays e + objetos. Ao contrário dos valores escalares, arrays + e objetos armazenam suas + propriedades em uma tabela de símbolos própria. Isto significa que o exemplo + a seguir cria três contêineres zval: + + + + Criando um zval de <type>array</type> + + 'life', 'number' => 42 ); +xdebug_debug_zval( 'a' ); +?> +]]> + + &example.outputs.similar; + + (refcount=1, is_ref=0)='life', + 'number' => (refcount=1, is_ref=0)=42 +) +]]> + + Ou graficamenet + + Zvals para um array simples + + + + + + + + Os três contêineres zval são: a, meaning, e number. + Regras similares se aplicam para aumento e redução de "refcounts". Abaixo, outro elemento é + adicionado ao array, e define seu valor ao conteúdo de um elemento + já existente: + + + + Adicionando elemento já existente a um array + + 'life', 'number' => 42 ); +$a['life'] = $a['meaning']; +xdebug_debug_zval( 'a' ); +?> +]]> + + &example.outputs.similar; + + (refcount=2, is_ref=0)='life', + 'number' => (refcount=1, is_ref=0)=42, + 'life' => (refcount=2, is_ref=0)='life' +) +]]> + + Ou graficamente + + Zvals para um array simples com uma referência + + + + + + + + Pela saída do Xdebug acima, pode-se perceber que tanto o elemento antigo do array + quanto o novo agora apontam para um contêiner zval cujo "refcount" é + 2. Embora a saída do Xdebug mostre dois contêineres zval + com valor 'life', eles são o mesmo. A função + xdebug_debug_zval não mostra isso, mas + pode-se ver isso mostrando o ponteiro de memória. + + + Remover o elemento de um array é como remover um símbolo de um escopo. + Fazendo isso, o "refcount" de um contêiner ao qual um elemento do array aponta + é reduzido. Novamente, quando o "refcount" atinge zero, o contêiner da + variável é removido da memória. Um exemplo para mostrar isto: + + + + Removendo um elemento de um array + + 'life', 'number' => 42 ); +$a['life'] = $a['meaning']; +unset( $a['meaning'], $a['number'] ); +xdebug_debug_zval( 'a' ); +?> +]]> + + &example.outputs.similar; + + (refcount=1, is_ref=0)='life' +) +]]> + + + + + Agora, as coisas ficam interessantes se o próprio array for adicionado como + um elemento do array, o que é mostrado no exemplo a seguir, onde também um operador + de referência foi inserido, senão o PHP criaria uma cópia: + + + + Adicionando o próprio array como um elemento de si mesmo + + +]]> + + &example.outputs.similar; + + (refcount=1, is_ref=0)='one', + 1 => (refcount=2, is_ref=1)=... +) +]]> + + Ou graficamente + + Zvals para um array com referência circular + + + + + + + + Pode-se perceber que a variável do array (a) assim como o segundo elemento + (1) agora apontam para um contêiner de veriável que tem um "refcount" de 2. + Os "..." no exemplo acima mostram que há recursão envolvida, e que, + obviamente, neste caso significa que os "..." apontam de volta ao + array original. + + + Como antes, tirar a atribuição de uma variável remove o símbolo, e a + contagem de referência do contêiner da variável à qual o símbolo aponta é reduzida em uma + unidade. Então, se a variável $a perder a atribuição após execução do código acima, + a contagem de referência do contêiner da variável à qual $a e o elemento "1" apontam + será diminuída em uma unidade, de "2" para "1". Isto pode ser representado assim: + + + + Removendo a atribuição de <varname>$a</varname> + + (refcount=1, is_ref=0)='one', + 1 => (refcount=1, is_ref=1)=... +) +]]> + + Ou graficamente + + Zvals depois da remoção do array com um referência circular demonstrando o vazamento de memória + + + + + + + + + + Problemas na Limpeza + + Embora não haja mais um símbolo em nenhum escopo apontando para esta + estrutura, ela não pode ser limpa porque o elemento "1" do array ainda + aponta para este mesmo array. Como não há símbolo externo apontando para + ela, não há como um usuário limpar esta estrutura; e aí acontece o + vazamento de memória. Felizmente, o PHP irá limpar esta estrutura de dados no final + da requisição, mas até lá, ela irá ocupar um espaço valioso na + memória. Esta situação ocorre frequentemente quando se está implementando algoritmos + de interpretação ou outros onde existe um elemento "filho" apontando de volta para um + elemento "pai". A mesma situação também pode com certeza ocorrer com objetos, onde + na verdade existe mais probabilidade de ocorrer, já que objetos são sempre implicitamente + usados por referência. + + + Isso pode não ser um problema quanto acontecer somente uma ou duas vezes, mas se + houver milhares, ou até milhões dessas perdas de memória, obviamente + começa a ser um problema. É especialmente problemático em scripts de execução + longa, como daemons onde a requisição basicamente nunca termina, + ou em grande conjuntos de testes de unidades. Este último já causou problemas durante + a execução de testes de unidades para o componente Template da bilioteca eZ + Components. Em alguns casos, era necessário mais de 2GB de memória, que o servidor + de testes não tinha. + + + + + + Ciclos de Coleta + + Tradicionalmente, mecanismos de memória de contagem de referência, como os + usados anteriormente pelo PHP, falham ao lidar com vazamentos de memória de referência circular; + entretanto, desde a versão 5.3.0, o PHP implementa o algoritmo síncrono do artigo + Concurrent Cycle Collection in Reference Counted Systems + que lida com este problema. + + + Uma explicação completa de como o algoritmo funciona estaria um pouco além do + escopo desta seção, mas o básico é explicado aqui. Primeiramente, + deve-se estabelecer algumas regras gerais. Se um "refcount" é incrementado, ele + ainda está em uso e, portanto, não é lixo. Se o refcount é reduzido e + alcança zero, o zval pode ser liberado. Isso significa que os ciclos de coleta + somente podem ser criados quando um argumento "refcount" é reduzido para um valor diferente de zero. + Adicionalmente, em um ciclo de coleta, é possível descobrir quais partes são lixo, + verificando se é possível reduzir seus "refcounts" em uma unidade, + e então observando quais dos zvals têm um "refcount" diferente de zero. + + + + Algoritmo de coleta de lixo + + + + + + + Para evitar chamadas de verificação de ciclos de coleta com qualquer + redução possível de um refcount, o algoritmo em vez disso coloca todas as + raízes (zvals) possíveis no "buffer de raízes" (tornando-os "roxos"). Ele também + certifica que cada raiz possível chegue ao buffer apenas uma vez. Apenas quando + o buffer de raízes está cheio é que o mecanismo de coleta se inicia para todos + os diferentes zvals contidos. Veja o passo A na figura acima. + + + No passo B, o algoritmo executa uma pesquisa em profundidade em todas as raízes possíveis + para reduzir em um os refcounts de cada zval que ele encontra, certificando-se de não + reduzir um refcount no mesmo zval duas vezes (marcando-os de "cinza"). No + passo C, o algoritmo novamente executa uma pesquisa em profundidade a partir de cada nó de raiz, + para verificar o refcount de cada zval de novo. Se ele encontra o valor zero, + o zval é marcado de "branco" (azul na figura). Se ele for maior que + zero, ele reverte a redução do refcount em uma unidade com uma pesquisa em + profundidade daquele ponto em diante, e eles são marcados de "preto" novamente. No último + passo (D), o algoritmo percorre o buffer de raízes removendo as raízes de zval + de lá e, ao mesmo tempo, verifica quais zvals foram marcados de "branco" no + passo anterior. Cada zval marcado de "branco" será liberado da memória. + + + Agora que há um entendimento básico de como o algoritmo funciona, vejamos + como isto se integra com o PHP. Por padrão, o coletor de lixo do + PHP fica habilitado. Existe, porém uma configuração + do &php.ini; que permite mudar isso: + zend.enable_gc. + + + Quando o coletor de lixo é habilitado, o algoritmo de pesquisa de ciclos como + descrito acima é executado toda vez que o buffer ficar cheio. O buffer + de raízes tem um tamanho fixo de 10.000 raízes possíveis (embora isso possa ser + alterado mudando-se a constante GC_THRESHOLD_DEFAULT em + Zend/zend_gc.c no código-fonte do PHP, e recompilando-o). + Quando o coletor de lixo é desabilitado, o algoritmo de pesquisa + de ciclos nunca será executado. Entretando, possíveis raízes serão sempre registradas + no buffer de raízes, não importando se o mecanismo de coleta de lixo tenha + sido ou não habilitado com esta configuração. + + + Se o buffer de raízes ficar cheio de raízes possíveis enquanto o mecanismo de + coleta de lixo está desabilitado, as possíveis raízes adicionais simplesmente + não serão registradas. Essas raízes não registradas nunca serão + analisadas pelo algoritmo. Se eles fossem parte de um ciclo de referência + circular, eles nunca seriam limpados e iriam criar um vazamento de memória. + + + O motivo pelo qual as raízes possíveis são registradas mesmo se o mecanismo + for desabilitado é poque é mais rápido registrar raízes possíveis do que ter que + verificar se o mecanismo está ligado toda vez que uma raiz possível puder + ser encontrada. O próprio mecanismo de coleta e análise de lixo, no entanto, + pode levar um tempo considerável. + + + Além de mudar a configuração zend.enable_gc, + também é possível habilitar e desabilitar o mecanismo de coleta de lixo + chamando-se gc_enable ou + gc_disable respectivamente. Chamar estas funções tem + o mesmo efeito de ligar ou desligar o mecanismo com a configuração. + Também é possível forçar a coleta de ciclos mesmo se o + buffer de raízes possíveis não estiver cheio. Para isto, pode-se usar + a função gc_collect_cycles. Esta função retornará + quantos ciclos foram coletados pelo algoritmo. + + + A razão por trás da possibilidade do prório usuário ligar e desligar o mecanismo, e + iniciar a coleta de ciclos, é que algumas partes de aplicações podem ser + altamente sensíveis a tempo de execução. Nesses casos, pode não ser desejado que + o mecanismo de coleta inicie. Obviamente, desligando-se o coletor + de lixo para certas partes de uma aplicação cria o risco + de gerar vazamentos de memória porque algumas raízes possíveis podem não + caber no buffer limitado. Portanto, provavelmente é mais sábio chamar + a função gc_collect_cycles logo antes de chamar + a função gc_disable para liberar a memória que poderia ser perdida + através de raízes possíveis que estariam já registradas no buffer. Isso + então leva a um buffer vazio para que haja mais espaço para armazenar + raízes possíveis enquanto o mecanismo de ciclos de coleta está desligado. + + + + + Considerações de Desempenho + + Já foi mencionado na seção anterior que simplesmente coletar as + raízes possíveis tme um impacto muito pequeno em desempenho, mas isso quando + compara-se o PHP 5.2 com o PHP 5.3. Embora o registro de raízes possíveis + comparado ao não registro, como no PHP 5.2, seja mais lento, outras + mudanção em tempo de execução no PHP 5.3 evitam que esta perda particular + de desempenho apareça. + + + Existem duas grandes áreas onde o desempenho é afetado. A primeira + é o uso reduzido de memória, e a segunda é o atraso em tempo de execução + quando o mecanismo de coleta de lixo faz suas limpezas de memória. Estes + dois problemas serão mostrados a seguir. + + + + Uso Reduzido de Memória + + Primeiramente, o grande motivo pelo qual o mecanismo de coleta de lixo + existe é para reduzir o uso de memória através de limpeza de variáveis + em referência circular assim que os pré-requisitos são preenchidos. Na + implementação do PHP, isso acontece assim que o buffer de raízes fica cheio, ou + quando a função gc_collect_cycles é chamada. No + gráfico abaixo, é mostrado o uso de memória do script a seguir, + tanto no PHP 5.2 quanto no PHP 5.3, excluindo a memória básica que o próprio + PHP usa quando se inicia. + + + + Exemplo de uso de memória + +self = $a; + if ( $i % 500 === 0 ) + { + echo sprintf( '%8d: ', $i ), memory_get_usage() - $baseMemory, "\n"; + } +} +?> +]]> + + + Comparação de uso de memória entre o PHP 5.2 e o PHP 5.3 + + + + + + + + Neste exemplo bem acadêmico, está sendo criado um objeto no qual + uma propriedade é definida para apontar para o próprio objeto. Quando a variável $a + no script é re-atribuída na iteração seguinte do loop, um vazamento de + memória normalmente iria acontecer. Neste caso, dois contêineres são vazados + (o zval objeto e o zval propriedade), mas apenas uma raiz possível é + encontrada: a variável que perdeu a atribuição. Quando o buffer de raízes está cheio + depois de 10.000 iterações (com um total de 10.000 raízes possíveis), o mecanismo + de coleta de lixo entra e libera a memória associada com essas + raízes possíveis. Isto pode ser visto claramente com o gráfico irregular + de uso de memória para o PHP 5.3. Depois de 10.000 iterações, o mecanismo entre + e libera a memória associada com as variáveis com referência circular.. + O mecanismo em si não tem muito trabalho neste exemplo, + porque a estrutura que é vazada é extremamente simples. Pelo + diagrama, pode-se verificar que o uso de memória no PHP 5.3 é de aproximadamente + 9Mb, enquanto que no PHP 5.2 o uso de memória continua crescendo. + + + + + Atraso em Tempo de Execução + + A segunda área onde o mecanismo de coleta de lixo influencia o + desempenho é o tempo gasto quando o mecanismo entre + para liberar a memória "vazada". Para verificar quanto é este tempo, + o script anterior foi minimamente modificado para permitir um número maior de + iterações e a remoção dos números de uso de memória intermediária. O + segundo script está apresentado a seguir: + + + + Influência do Coletor de Lixo no desempenho + +self = $a; +} + +echo memory_get_peak_usage(), "\n"; +?> +]]> + + + + + O script será executado duas vezes, uma com a configuração + zend.enable_gc habilitada, + e outra desabilitada: + + + + Executando o script acima + + + + + + + Em uma máquina específica, o primeiro comando parece levar 10.7 segundos, + enquanto que o segundo leva 11.4 seconds. Isto é um atraso de + aproximadamente 7%. Entretanto, a quantidade máxima de memória usada pelo + script é reduzida em 98%, de 931Mb para 10Mb. Esta referência não é muito + científica, ou mesmo representativa para aplicações do mundo real, mas + demonstra os benefícios de uso de memória que este mecanismo de coleta + de lixo fornece. A boa notícia é que este atraso é sempre de + 7% para este script particular, enquando que as capacidades de + redução de memória economizam mais e mais memória quando referências + circulares adicionais são encontradas durante a execução do script. + + + + + Estatísticas de GC Internas do PHP + + É possível obter um pouco mais de informação sobre como o + o mecanismo de coleta de lixo é executado no PHP. Mas para fazer isto, + deve-se recompilar o PHP para habilitar o benchmark e o + código de coleta de dados. Deve-se definir a variável de ambiente + CFLAGS para -DGC_BENCH=1 antes de executar + ./configure com as opções desejadas. A sequencia a + seguir deve fazer este truque: + + + + Recompilando o PHP para habilitar o benchmarking de GC + + + + + + + Quando o exemplo acima for executado novamente com o novo + binário do PHP, o resultado abaixo será visualizado assim que o + PHP terminar a execução: + + + + Estatísticas GC + + + + + + + As estatísticas mais informativas são mostradas no primeiro bloco. Pode-se + ver que aqui que o mecanismo de coleta de lixo foi executado 110 vezes, e no + total, mais de 2 milhões de alocações de memória foram liberadas durante estas + 110 execuções. Assim que o mecanismo tenha sido executado pelo menos + uma vez, o "Root buffer peak" (pico do buffer de raízes) será sempre 10.000. + + + + + Conclusãon + + Em geral o coletor de lixo no PHP irá causar um atraso apenas quando + o algoritmo de coleta realmente for executado, enquanto que em scripts normais + (menores), não deve haver nenhum prejuízo no desempenho. + + + Entretanto, em casos onde o mecanismo de coleta é executado em + scripts normais, a redução de memória que ele vai proporcionar irá permitir + que mais desses scripts possam ser executados ao mesmo tempo no servidor, já que + a quantidade de memória usada no total não será muito grande. + + + Os benefícios são mais aparentes para scripts de longa execução, como os + scripts de conjunto de testes ou daemons. Adicionalmente, para aplicações PHP-GTK + que geralmente tendem a rodar por mais tempo que scripts para a Web, o novo + mecanismo deve fazer uma diferença considerável em relação a vazamentos + de memória que insistem em acontecer. + + + + + + diff --git a/install/windows/commandline.xml b/install/windows/commandline.xml new file mode 100644 index 000000000..feee4e0cd --- /dev/null +++ b/install/windows/commandline.xml @@ -0,0 +1,209 @@ + + + + PHP em Linha de Comando no Microsoft Windows + + Esta seção contém notas e dicas específicas para que o PHP + seja executado da linha de comando do Windows. + + + + Deve-se ler os passos do manual + de instalação primeiro! + + + + Configurar o PHP para ser executado da linha de comando pode ser feito sem + nenhuma mudança no Windows. + + + + + + + Porém há alguns passos fáceis que podem ser seguidos para tornar o processo mais simples. + Alguns desses passos podem já ter sido executados, mas estão repetidos aqui + para fornecer uma sequência completa, passo a passo. + + + + + PATH e PATHEXT são importantes variáveis + de sistemas pré-existentes no Windows, + e deve-se tomar cuidado para não sobrescrever nenhuma das duas, + apenas concatenar valores. + + + + + + Concatene a localização do executável do PHP (php.exe, + php-win.exe ou php-cli.exe + dependendo da versão do PHP e preferências de visualização) à variável + de ambiente PATH. Leia mais sobre como adicionar + a pasta do PHP à variável PATH na entrada FAQ correspondente. + + + + + + Adicione a extensão .PHP à variável de + ambiente PATHEXT. Isto pode ser feito + ao mesmo tempo que se adiciona à variável PATH. + Siga os mesmos passos descritos no FAQ mas adicione à variável + PATHEXT no lugar da variável + PATH. + + + A posição em que você inserir a extensão .PHP irá + determinar qual script ou programa será executado quando o nome do arquivo + for especificado. Por exemplo, inserir .PHP antes de + .BAT irá fazer com que seu script seja executado, em vez + do arquivo de lote, se existir um arquivo de lote com o mesmo nome. + + + + + + + + Associe a extensão .PHP com o tipo de arquivo. Isto + pode ser feito executando o seguinte comando: + + + + + + + + + Associe o tipo de arquivo phpfile com o executável PHP + apropriado. Isto pode ser feito executando o seguinte comando: + + + + + + + + + + + Seguir estes passos irá permitir que os scripts PHP sejam executados de qualquer pasta + sem a necessidade de digitar o executável PHP ou a extensão + .PHP e todos os parâmetros serão fornecidos ao script para processamento. + + + + O exemplo abaixo detalha algumas das alterações de registro que podem ser realizadas manualmente. + + Alterações de Registro + + + + + + + + Com estas alterações o mesmo comando pode ser escrito como: + + + + ou, se o caminho "C:\PHP Scripts" estiver na + variável de ambiente PATH: + + + + + + + + Existe um pequeno problema se a intenção for usar esta técnica e usar + os scripts PHP como um filtro de linha de comando, como o exemplo abaixo: + + + + ou + + + + Neste caso, o script poderá simplesmente travar e não produzir nenhuma saída. + Para tornar esta opção operacional, deve-se fazer uma outra alteração no registro. + + + + Mais informações sobre este problema pode ser encontrado neste artigo Microsoft + Knowledgebase Article : 321788. + A partir do Windows 10, esta configuração foi invertida, fazendo com que a instalação padrão do + Windows 10 suporte automaticamente esta opção. Esta postagem do + Microsoft Forum fornece a explicação. + + + + diff --git a/install/windows/manual.xml b/install/windows/manual.xml new file mode 100644 index 000000000..b2aec0b6e --- /dev/null +++ b/install/windows/manual.xml @@ -0,0 +1,103 @@ + + + + Instalação Manual do PHP no Windows + + Escolhendo o Servidor Web + + IIS + + O servidor IIS já vem embutido na instalação do Windows. + No Windows Server, o papel do IIS pode ser adicionado pelo Gerenciados do Servidor. O recurso CGI Role precisa ser incluído. + No Windows Desktop, o IIS precisa ser instalado pelo Painel de Controle, na opção Adicionar/Remover Programas. + A documentação da Microsoft tem instruções detalhadas. + No caso de aplicações web para computadores e desenvolvimento web, o IIS/Express ou PHP Desktop também podem ser usados. + + Linha de comando para configurar IIS e PHP + + + + + + + + + Apache + + Existem várias compilações de Apache2 para Windows. + As compilações do ApacheLounge são recomendadas, mas há outras opções incluindo XAMPP, WampServer e BitNami, que fornecem ferramentas de instalação automática. + PHP pode ser usado no Apache através do mod_php ou do mod_fastcgi. + mod_php requer uma compilação TS (thread safe) do Apache, com a mesma versão de Visual C e para a mesma CPU (x86 ou x64). + + + + + + Escolha a Compilação + + Compilações para o Windows podem ser baixadas de http://windows.php.net/download/. + Todas as compilações são otimizadas (PGO), e as versões QA e GA são extensivamente testadas. + + + Existem 4 tipos de compilação do PHP: + + + Thread-Safe(TS) - para servidores web de processo único, como Apache com mod_php. + + + Non-Thread-Safe(NTS) - para IIS e outros servidores web FastCGI (Apache com mod_fastcgi) e recomendado para scripts de linha de comando. + + + x86 - para sistemas de 32-bits. + + + x64 - para sistemas de 64-bits. + + + + + + diff --git a/install/windows/recommended.xml b/install/windows/recommended.xml new file mode 100644 index 000000000..5a68afeda --- /dev/null +++ b/install/windows/recommended.xml @@ -0,0 +1,111 @@ + + + + Configuração Recomendada em sistemas Windows + + OpCache + + É altamente recomendado habilitar o OpCache. + Esta extensão é incluída no PHP para Windows. + Ela compila e otimiza os scripts PHP e os mantém na memória cache para + que não sejam compilados toda vez que uma página é carregada. + + + Configure o &php.ini;: + + Configuração recomendada do OpCache + + + + + Reinicie o servidor web. + + Para mais informação, consulte: Configuração OpCache + + + + WinCache + + Recomenda-se usar o WinCache se o IIS for usado, especialmente em um ambiente + de hospedagem web compartilhado ou em armazenamento de arquivos de rede (NAS). + Note que o WinCache não é mais suportado a partir do PHP 8.0.0. + + Todas as aplicações PHP se beneficiam automaticamente do recurso de cache de arquivo do WinCache. Operações do sistema de arquivos são armazenadas em cache. + + WinCache também armazena em cache objetos de usuário e compartilha-os entre os processos php.exe ou php-cgi.exe (compartilha objetos entre requisições). + + Muitas das grandes aplicações web têm um plugin ou extensão ou opção de configuração para uso do WinCache para cache de objetos de usuário. + + Se um alto desempenho é requerido, deve-se usar cache de objetos na aplicação. + + Consulte: http://pecl.php.net/package/WinCache para baixar uma DLL WinCache (or tgz) para a pasta de extensões PHP (extensions_dir no php.ini). + + Configure o &php.ini;: + + Configuração WinCache recomendada + + + + + Para mais informação, consulte: + Configuração WinCache + + + + + Configuração IIS + + + No Gerenciador IIS, instale o módulo FastCGI e adicione um manipulador para mapear a + extensão `.php` para o caminho do PHP-CGI.exe + (não para o PHP.exe) + + + + Pode ser usado o Prompt de Comando para configurar o IIS via script. + + + + + Banco de Dados + + Provavelmente será necessário um Servidor de Banco de Dados. + Bancos de dados populares fornecem extensões PHP para que possam ser utilizados. + Se o site não tiver um tráfego muito alto, + o servidor de banco de dados pode ser executado no mesmo servidor web. + Muitos bancos de dados populares podem são compatíveis com o Windows. + + + O PHP inclui as extensões mysqli e pdo_mysql. + + Consulte https://dev.mysql.com/downloads/windows/ + + + + diff --git a/install/windows/tools.xml b/install/windows/tools.xml new file mode 100644 index 000000000..fc98866bf --- /dev/null +++ b/install/windows/tools.xml @@ -0,0 +1,38 @@ + + + + Ferramentas de instalação do PHP no Windows + + Ferramentas de instalação do PHP + + XAMPP, + WampServer e BitNami irão configurar as aplicações PHP para utilização com Apache no Windows. + + + + Preparar e configurar o Nginx no Windows requer um pouco mais de configuração. + Consulte a documentação Nginx + para apoio adicional. + + + + diff --git a/install/windows/troubleshooting.xml b/install/windows/troubleshooting.xml new file mode 100644 index 000000000..a90e1bc32 --- /dev/null +++ b/install/windows/troubleshooting.xml @@ -0,0 +1,42 @@ + + + + Solução de Problemas do PHP no Windows + + Verifique as Permissões da Pasta Temporária + + + + + Clique com o botão direito na pasta de arquivos temporários no Explorador de Arquivos para obter as permissões. + + + + + Para o IIS, verifique que o usuário IIS_User tem a permissão de MODIFICAÇÃO. + Pode-se obter o caminho da pasta de arquivos temporários no arquivos de configuração ou na função php_info. + + + + + + diff --git a/language-snippets.ent b/language-snippets.ent index b8e6e93b9..0a6c30868 100755 --- a/language-snippets.ent +++ b/language-snippets.ent @@ -1,5 +1,5 @@ - + @@ -2383,13 +2383,19 @@ relativos '> + kmsProviders array Um documento contendo a configuração de um ou mais provedores KMS, que são usados para criptografar chaves de dados. Os provedores compatíveis incluem "aws", "azure", "gcp", "kmip" e "local" e pelo menos um deve ser especificado. + + Se um documento vazio for especificado para "aws", + "azure", ou "gcp", o driver + tentará configurar o provedor usando + Credenciais Automáticas. + O formato para "aws" é o seguinte: diff --git a/language/context/zip.xml b/language/context/zip.xml new file mode 100644 index 000000000..06946f77f --- /dev/null +++ b/language/context/zip.xml @@ -0,0 +1,106 @@ + + + + + + Opções de contexto para Zip + Listagem de opções de contexto para Zip + + + + &reftitle.description; + + Opções de contexto para Zip estão disponíveis para encapsuladores zip. + + + + + &reftitle.options; + + + + password + + + Utilizado para especificar a senha definida para o arquivo criptografado. + + + + + + + + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + PHP 7.2.0, PECL zip 1.14.0 + + Incluído o parâmetro password. + + + + + + + + + + &reftitle.examples; + + + Exemplo básico de uso de <parameter>password</parameter> + + array( + 'password' => 'secret', + ), +); +// criar o contexto... +$context = stream_context_create($opts); + +// ...e usá-lo para obter os dados +echo file_get_contents('zip://test.zip#test.txt', false, $context); + +?> +]]> + + + + + + + + + diff --git a/language/context/zlib.xml b/language/context/zlib.xml new file mode 100644 index 000000000..7a0e663da --- /dev/null +++ b/language/context/zlib.xml @@ -0,0 +1,78 @@ + + + + + + Opções de contexto Zlib + Listagem de opções de contexto Zlib + + + + &reftitle.description; + + Opções de contexto Zlib estão disponíveis para encapsuladores zlib. + + + + + &reftitle.options; + + + + level + + + Usado para especificar o nível de compressão (0 - 9). + + + + + + + + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + 7.3.0 + + O parâmetro level foi incluído. + + + + + + + + + + + diff --git a/language/errors.xml b/language/errors.xml index 5c42763e5..f113a4afc 100644 --- a/language/errors.xml +++ b/language/errors.xml @@ -1,5 +1,5 @@ - + Erros @@ -7,9 +7,9 @@ Introdução - Infelizmente, não importa quão cuidosos somos escrevendo nossos códigos, erros são + Infelizmente, não importa quão cuidadosos somos escrevendo nossos códigos, erros são fatos da vida. O PHP reportará erros, advertências e avisos para muitos - problemas comuns de codificação e problemas em tempo de execução, e saber como detectar e manusear estes + problemas comuns de codificação e problemas em tempo de execução, e saber como detectar e lidar com estes erros farão o processo de depuração muito mais fácil. diff --git a/language/predefined/attributes/allowdynamicproperties.xml b/language/predefined/attributes/allowdynamicproperties.xml index 403d9c8bc..68b5d8e41 100644 --- a/language/predefined/attributes/allowdynamicproperties.xml +++ b/language/predefined/attributes/allowdynamicproperties.xml @@ -1,4 +1,4 @@ - + A classe AllowDynamicProperties AllowDynamicProperties @@ -16,18 +16,12 @@
&reftitle.classsynopsis; - + + final AllowDynamicProperties - - - final - AllowDynamicProperties - - - &Methods; diff --git a/language/predefined/attributes/attribute.xml b/language/predefined/attributes/attribute.xml index 6191b0684..025f5f2be 100644 --- a/language/predefined/attributes/attribute.xml +++ b/language/predefined/attributes/attribute.xml @@ -1,4 +1,4 @@ - + A classe Attribute Attribute @@ -21,18 +21,12 @@
&reftitle.classsynopsis; - + + final Attribute - - - final - Attribute - - - &Constants; const diff --git a/language/predefined/attributes/returntypewillchange.xml b/language/predefined/attributes/returntypewillchange.xml index af671cca2..7879a75c6 100644 --- a/language/predefined/attributes/returntypewillchange.xml +++ b/language/predefined/attributes/returntypewillchange.xml @@ -1,4 +1,4 @@ - + A classe ReturnTypeWillChange ReturnTypeWillChange @@ -21,18 +21,12 @@
&reftitle.classsynopsis; - + + final ReturnTypeWillChange - - - final - ReturnTypeWillChange - - - &Methods; diff --git a/language/predefined/attributes/sensitiveparameter.xml b/language/predefined/attributes/sensitiveparameter.xml index 7fec35709..cefc97bd4 100644 --- a/language/predefined/attributes/sensitiveparameter.xml +++ b/language/predefined/attributes/sensitiveparameter.xml @@ -1,4 +1,4 @@ - + A classe SensitiveParameter SensitiveParameter @@ -17,18 +17,12 @@
&reftitle.classsynopsis; - + + final SensitiveParameter - - - final - SensitiveParameter - - - &Methods; diff --git a/language/predefined/variables/httpresponseheader.xml b/language/predefined/variables/httpresponseheader.xml index 1da45f887..030cc87c9 100644 --- a/language/predefined/variables/httpresponseheader.xml +++ b/language/predefined/variables/httpresponseheader.xml @@ -1,5 +1,6 @@ - + + $http_response_header @@ -28,10 +29,10 @@ ]]> @@ -58,6 +59,8 @@ array(9) { [8]=> string(38) "Content-Type: text/html; charset=UTF-8" } + +Warning: Undefined variable $http_response_header NULL ]]> diff --git a/language/predefined/variables/superglobals.xml b/language/predefined/variables/superglobals.xml index 84a50c351..bd023ebd8 100644 --- a/language/predefined/variables/superglobals.xml +++ b/language/predefined/variables/superglobals.xml @@ -1,5 +1,5 @@ - + diff --git a/reference/datetime/dateerror.xml b/reference/datetime/dateerror.xml new file mode 100644 index 000000000..c0143e5f0 --- /dev/null +++ b/reference/datetime/dateerror.xml @@ -0,0 +1,84 @@ + + + + A classe DateError + DateError + + + + +
+ &reftitle.intro; + + Disparada quando o banco de dados de fuso horário não for encontrado ou contiver dados inválidos. + + + Este erro nunca deveria ocorrer, e não é dependente do código. Existem duas + exceções-filhas (DateObjectError e + DateRangeError) que são disparadas dependendo + do erro do programados ou de problemas relacionados a faixas de datas. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateError + + + + extends + Error + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.seealso; + + DateObjectError + DateRangeError + +
+
+ +
+ diff --git a/reference/datetime/dateexception.xml b/reference/datetime/dateexception.xml new file mode 100644 index 000000000..a9259c1b0 --- /dev/null +++ b/reference/datetime/dateexception.xml @@ -0,0 +1,82 @@ + + + + A classe DateException + DateException + + + + +
+ &reftitle.intro; + + Classe pai das exceções de Data/Hora, para problemas que surgem devido a + entradas do usuário ou argumentos texto em formato livre que precisam ser analisados. + + + As exceções-filhas a seguir são disparadas pela extensão: + + DateInvalidOperationException + DateInvalidTimezoneException + DateMalformedIntervalStringException + DateMalformedPeriodStringException + DateMalformedStringException + + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateException + + + + extends + Exception + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/dateinvalidoperationexception.xml b/reference/datetime/dateinvalidoperationexception.xml new file mode 100644 index 000000000..7e276d08c --- /dev/null +++ b/reference/datetime/dateinvalidoperationexception.xml @@ -0,0 +1,79 @@ + + + + A classe DateInvalidOperationException + DateInvalidOperationException + + + + +
+ &reftitle.intro; + + Disparada por DateTimeImmutable::sub e + DateTime::sub quando uma operação não suportada é + solicitada. + + + Um exemplo de operação não suportada é o uso de + um objeto DateInterval representando especificação de tempo + relativo como next weekday, que não + permite construir um objeto por ser inválido. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateInvalidOperationException + + + + extends + DateException + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/dateinvalidtimezoneexception.xml b/reference/datetime/dateinvalidtimezoneexception.xml new file mode 100644 index 000000000..18cf04344 --- /dev/null +++ b/reference/datetime/dateinvalidtimezoneexception.xml @@ -0,0 +1,72 @@ + + + + A classe DateInvalidTimeZoneException + DateInvalidTimeZoneException + + + + +
+ &reftitle.intro; + + Disparada quando um valor incorreto é passado para + DateTimeZone::__construct. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateInvalidTimeZoneException + + + + extends + DateException + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/datemalformedintervalstringexception.xml b/reference/datetime/datemalformedintervalstringexception.xml new file mode 100644 index 000000000..544796262 --- /dev/null +++ b/reference/datetime/datemalformedintervalstringexception.xml @@ -0,0 +1,72 @@ + + + + The DateMalformedIntervalStringException class + DateMalformedIntervalStringException + + + + +
+ &reftitle.intro; + + Disparada quando um argumento duration inválido é passado para + DateInterval::__construct. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateMalformedIntervalStringException + + + + extends + DateException + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/datemalformedperiodstringexception.xml b/reference/datetime/datemalformedperiodstringexception.xml new file mode 100644 index 000000000..338c6034d --- /dev/null +++ b/reference/datetime/datemalformedperiodstringexception.xml @@ -0,0 +1,72 @@ + + + + A classe DateMalformedPeriodStringException + DateMalformedPeriodStringException + + + + +
+ &reftitle.intro; + + Disparaqa quando um argumento isostr inválido é passado para + DatePeriod::__construct. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateMalformedPeriodStringException + + + + extends + DateException + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/datemalformedstringexception.xml b/reference/datetime/datemalformedstringexception.xml new file mode 100644 index 000000000..fd25b8a8f --- /dev/null +++ b/reference/datetime/datemalformedstringexception.xml @@ -0,0 +1,77 @@ + + + A classe DateMalformedStringException + DateMalformedStringException + + + + +
+ &reftitle.intro; + + Disparada quando uma string inválida de Data/Hora é detectada. + + + Pode ser um valor para + DateTimeImmutable::__construct, + DateTimeImmutable::modify, + DateTime::__construct ou + DateTime::modify. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateMalformedStringException + + + + extends + DateException + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ +
+ diff --git a/reference/datetime/dateobjecterror.xml b/reference/datetime/dateobjecterror.xml new file mode 100644 index 000000000..6d94204ee --- /dev/null +++ b/reference/datetime/dateobjecterror.xml @@ -0,0 +1,85 @@ + + + + A classe DateObjectError + DateObjectError + + + + +
+ &reftitle.intro; + + Disparada quando uma das classe de Data/Hora não foi corretamente + inicializada. + + + Como as classes de Data/Hora não são finais, eles podem ser herdadas. + Quando um construtor da classe pai não é chamado, este erro é disparado. Este é + sempre um erro de programação. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateObjectError + + + + extends + DateError + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.seealso; + + DateError + DateRangeError + +
+ +
+ +
+ diff --git a/reference/datetime/dateperiod/createfromiso8601string.xml b/reference/datetime/dateperiod/createfromiso8601string.xml new file mode 100644 index 000000000..0f4ebf7f2 --- /dev/null +++ b/reference/datetime/dateperiod/createfromiso8601string.xml @@ -0,0 +1,171 @@ + + + + + DatePeriod::createFromISO8601String + Cria um novo objeto DatePeriod a partir de uma string ISO8601 + + + + &reftitle.description; + + public static staticDatePeriod::createFromISO8601String + stringspecification + intoptions0 + + + Cria um novo objeto DatePeriod a partir de uma string ISO8601, como especificado no parâmetro + specification. + + + + + &reftitle.parameters; + + + specification + + + Um subconjunto da especificação ISO 8601 + de intervalos repetitivos. + + + Um exemplo de uma especificação de intervalo ISO 8601 aceitável é + R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M, que + especifica: + + + + + 5 iterações (R5/) + + + + + Inicia em 2008-03-01T13:00:00Z. + + + + + Cada iteração ocorrem em um intervalo de 1 ano, 2 meses, 10 dias, 2 horas e 30 minutos + (/P1Y2M10DT2H30M). + + + + + + Exemplo de recursos de especificação de intervalos ISO 8601 que o PHP + não suporta são: + + + + + zero ocorrências (R0/) + + + + + deslocamento de fuso horário que não seja UTC (Z), como em +02:00. + + + + + + + options + + + Um campo de bits que pode ser utilizado para controlar certos comportamentos com datas iniciais + e finais. + + + Com DatePeriod::EXCLUDE_START_DATE, pode-se + excluir a data inicial do conjunto de datas recorrentes dentro do + período. + + + Com DatePeriod::INCLUDE_END_DATE, pode-se + incluir a data final no conjunto de datas recorrentes dentro do + período. + + + + + + + + &reftitle.returnvalues; + + Retorna um novo objeto DatePeriod. + + + Objetos DatePeriod criados com este método podem ser + usador como um iterador para gerar um número de + objetos DateTimeImmutable. + + + + + &reftitle.errors; + + Dispara DateMalformedPeriodStringException quando + o parâmetro specification não puder ser analisado como um período ISO 8601 + válido. + + + + + &reftitle.examples; + + + Exemplo de DatePeriod::createFromISO8601String + +format('Y-m-d'), "\n"; +} +?> +]]> + + &example.outputs; + + + + + + + + + diff --git a/reference/datetime/dateperiod/getdateinterval.xml b/reference/datetime/dateperiod/getdateinterval.xml new file mode 100644 index 000000000..597e8ac45 --- /dev/null +++ b/reference/datetime/dateperiod/getdateinterval.xml @@ -0,0 +1,86 @@ + + + + + DatePeriod::getDateInterval + + Obtém o intervalo + + + + + &reftitle.description; + &style.oop; + + public DateIntervalDatePeriod::getDateInterval + + + + Obtém um object da classe DateInterval + representando o intervalo usado para o período. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Retorna um object DateInterval. + + + + + &reftitle.examples; + + Exemplo de <methodname>DatePeriod::getDateInterval</methodname> + +getDateInterval(); +echo $interval->format('%d day'); +?> +]]> + + &example.outputs; + + + + + + + + &reftitle.seealso; + + DatePeriod::getStartDate + DatePeriod::getEndDate + + + + + diff --git a/reference/datetime/dateperiod/getenddate.xml b/reference/datetime/dateperiod/getenddate.xml new file mode 100644 index 000000000..591efc9ce --- /dev/null +++ b/reference/datetime/dateperiod/getenddate.xml @@ -0,0 +1,124 @@ + + + + + DatePeriod::getEndDate + + Obtém a data final + + + + + &reftitle.description; + &style.oop; + + public DateTimeInterfacenullDatePeriod::getEndDate + + + + Obtém a data final do período. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Retorna &null; se o DatePeriod + não tiver uma data final. Por exemplo, quando inicializado com o + parâmetro recurrences ou + isostr sem uma + data final. + + + Retorna um object DateTimeImmutable + quando o DatePeriod é inicializado com um + object DateTimeImmutable + no parâmetro end. + + + Caso contrário, retorna um clone do object DateTime + representando a data final. + + + + + &reftitle.examples; + + Exemplo de <methodname>DatePeriod::getEndDate</methodname> + +getEndDate(); +echo $start->format(DateTime::ISO8601); +?> +]]> + + &examples.outputs; + + + + + + Exemplo de <methodname>DatePeriod::getEndDate</methodname> sem uma data final + +getEndDate()); +?> +]]> + + &example.outputs; + + + + + + + + &reftitle.seealso; + + DatePeriod::getStartDate + DatePeriod::getDateInterval + + + + + diff --git a/reference/datetime/dateperiod/getrecurrences.xml b/reference/datetime/dateperiod/getrecurrences.xml new file mode 100644 index 000000000..1f674b0e7 --- /dev/null +++ b/reference/datetime/dateperiod/getrecurrences.xml @@ -0,0 +1,105 @@ + + + + + DatePeriod::getRecurrences + Obtém o número de recorrências + + + + &reftitle.description; + &style.oop; + + public intnullDatePeriod::getRecurrences + + + + Obtém Obtém o número de recorrências. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + O número de recorrências como definido explicitamente pelo parâmetro + $recurrences passado ao contrutor da + classe DatePeriod, ou &null; caso não tenha sido definido. + + + + + &reftitle.examples; + + + Diferentes valores para <methodname>DatePeriod::getRecurrences</methodname> + +getRecurrences(), "\n"; + +$period = new DatePeriod($start, $interval, $recurrences); +echo $period->getRecurrences(), "\n"; + +$period = new DatePeriod($start, $interval, $recurrences, DatePeriod::INCLUDE_END_DATE); +echo $period->getRecurrences(), "\n\n"; + +// recorrências não definidas no construtor +$period = new DatePeriod($start, $interval, $end); +var_dump($period->getRecurrences()); + +$period = new DatePeriod($start, $interval, $end, DatePeriod::EXCLUDE_START_DATE); +var_dump($period->getRecurrences()); +?>]]> + + &example.outputs; + +5 +5 +5 + +NULL +NULL + + + + + + + &reftitle.seealso; + + DatePeriod::$recurrences + + + + + diff --git a/reference/datetime/dateperiod/getstartdate.xml b/reference/datetime/dateperiod/getstartdate.xml new file mode 100644 index 000000000..e0d2dd3e6 --- /dev/null +++ b/reference/datetime/dateperiod/getstartdate.xml @@ -0,0 +1,92 @@ + + + + + DatePeriod::getStartDate + + Obtém a data inicial + + + + + &reftitle.description; + &style.oop; + + public DateTimeInterfaceDatePeriod::getStartDate + + + + Obtém a data inicial do período. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Retorna um object DateTimeImmutable + quando o DatePeriod é inicializado com um + object DateTimeImmutable + no parâmetro start. + + + Caso contrário, retorna um object + DateTime. + + + + + &reftitle.examples; + + Exemplo de <methodname>DatePeriod::getStartDate</methodname> + +getStartDate(); +echo $start->format(DateTime::ISO8601); +?> +]]> + + &example.outputs; + + + + + + + + &reftitle.seealso; + + DatePeriod::getEndDate + DatePeriod::getDateInterval + + + + + diff --git a/reference/datetime/daterangeerror.xml b/reference/datetime/daterangeerror.xml new file mode 100644 index 000000000..2790502f2 --- /dev/null +++ b/reference/datetime/daterangeerror.xml @@ -0,0 +1,82 @@ + + + + A classe DateRangeError + DateRangeError + + + + +
+ &reftitle.intro; + + Disparada por DateTime::getTimestamp, + DateTimeImmutable::getTimestamp e + date_timestamp_getem plataformas de 32 bits se o + objeto representa uma data fora da faixa de inteiros de 32 bits com sinal. + +
+ + +
+ &reftitle.classsynopsis; + + + + + DateRangeError + + + + extends + DateError + + + &InheritedProperties; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.seealso; + + DateError + DateObjectError + +
+ +
+ +
+ diff --git a/reference/datetime/datetime.xml b/reference/datetime/datetime.xml index 8735a35d2..fb6b71027 100644 --- a/reference/datetime/datetime.xml +++ b/reference/datetime/datetime.xml @@ -14,7 +14,7 @@ Representação de data e hora. - Esta classe se comporta da mesma maneira que a classeDateTimeImmutable, + Esta classe se comporta da mesma maneira que a classe DateTimeImmutable, exceto pelo fato de que os objetos se alteram quando métodos de modificação como DateTime::modify são chamados. diff --git a/reference/datetime/datetime/add.xml b/reference/datetime/datetime/add.xml index 2d0eb16ec..aebb193b6 100644 --- a/reference/datetime/datetime/add.xml +++ b/reference/datetime/datetime/add.xml @@ -25,7 +25,7 @@ Adiciona o objeto DateInterval informado a um objeto - DateTime especificado. + DateTime especificado. Equivalente a DateTimeImmutable::add mas funciona com diff --git a/reference/datetime/datetime/createfromimmutable.xml b/reference/datetime/datetime/createfromimmutable.xml new file mode 100644 index 000000000..ddcc125da --- /dev/null +++ b/reference/datetime/datetime/createfromimmutable.xml @@ -0,0 +1,106 @@ + + + + + DateTime::createFromImmutable + Retorna uma nova instância de DateTime encapsulando o objeto DateTimeImmutable informado + + + + &reftitle.description; + + public static staticDateTime::createFromImmutable + DateTimeImmutableobject + + + + + &reftitle.parameters; + + + + object + + + O objeto imutável DateTimeImmutable que necessita + ser convertido para uma versão mutável. Este objeto não é modificado, em + vez disso uma nova instância DateTime é + criada contendo as mesmas informações de data, horário e fuso. + + + + + + + + + &reftitle.returnvalues; + + Retorna uma nova instância DateTime. + + + + + &reftitle.changelog; + + + + + + &Version; + &Description; + + + + + 8.0.0 + + O método agora retorna uma instância da classe que está sendo chamada. Anteriormente, ele criava + uma nova instância de DateTime. + + + + + + + + + + &reftitle.examples; + + + Criando um objeto de data/hora mutável + + +]]> + + + + + + + diff --git a/reference/datetime/datetime/createfrominterface.xml b/reference/datetime/datetime/createfrominterface.xml new file mode 100644 index 000000000..3449d60b3 --- /dev/null +++ b/reference/datetime/datetime/createfrominterface.xml @@ -0,0 +1,83 @@ + + + + + DateTime::createFromInterface + Retorna um novo objeto DateTime encapsulando o objeto DateTimeInterface informado + + + + &reftitle.description; + + public static DateTimeDateTime::createFromInterface + DateTimeInterfaceobject + + + + + &reftitle.parameters; + + + + object + + + O objeto DateTimeInterface que necessita + ser convertido para uma versão mutável. Este objeto não é modificado, em + vez disso uma nova instância DateTime é + criada contendo as mesmas informações de data, horário e fuso. + + + + + + + + + &reftitle.returnvalues; + + Retorna uma nova instância de DateTime. + + + + + &reftitle.examples; + + + Criando um objeto de data/hora mutável + + +]]> + + + + + + diff --git a/reference/datetime/datetime/settimezone.xml b/reference/datetime/datetime/settimezone.xml index 96fffee70..00bde415f 100644 --- a/reference/datetime/datetime/settimezone.xml +++ b/reference/datetime/datetime/settimezone.xml @@ -21,7 +21,7 @@ DateTimeZonetimezone - Define um novo fuso horário a um objeto DateTime. + Define um novo fuso horário a um objeto DateTime. Equivalente a DateTimeImmutable::setTimezone mas funciona com diff --git a/reference/datetime/datetimeimmutable/createfrominterface.xml b/reference/datetime/datetimeimmutable/createfrominterface.xml new file mode 100644 index 000000000..c7e23ef6b --- /dev/null +++ b/reference/datetime/datetimeimmutable/createfrominterface.xml @@ -0,0 +1,83 @@ + + + + + DateTimeImmutable::createFromInterface + Retorna um novo objeto DateTimeImmutable encapsulando o objeto DateTimeInterface informado + + + + &reftitle.description; + + public static DateTimeImmutableDateTimeImmutable::createFromInterface + DateTimeInterfaceobject + + + + + &reftitle.parameters; + + + + object + + + O objeto DateTimeInterface que necessita + ser convertido para uma versão mutável. Este objeto não é modificado, em + vez disso uma nova instância DateTimeImmutable é + criada contendo as mesmas informações de data, horário e fuso. + + + + + + + + + &reftitle.returnvalues; + + Retorna uma nova instância de DateTimeImmutable. + + + + + &reftitle.examples; + + + Criando um objeto de data/hora imutável + + +]]> + + + + + + diff --git a/reference/datetime/examples.xml b/reference/datetime/examples.xml new file mode 100644 index 000000000..6ef95bcb8 --- /dev/null +++ b/reference/datetime/examples.xml @@ -0,0 +1,158 @@ + + + + + &reftitle.examples; + +
+ Aritmética de Data e Horário + + Os exemplos a seguir mostram algumas armadilhas da aritmética de Data/Horário em + relação a transições de horário de verão e meses que contêm números diferentes de dias. + + + + DateTimeImmutable::add/sub adicionando intervalos que tempo decorrido + + Adicionar PT24H sobre uma transição de horário de verão irá aparentar uma adição de + 23/25 horas (para a maioria dos fusos horários). + + +format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->add(new DateInterval("PT3H")); +echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +?> +]]> + + &example.outputs; + + + + + + + + DateTimeImmutable::modify e strtotime incrementando ou decrementando valores de componentes individuais + + Adicionar +24 horas sobre uma transição de horário de verão irá adicionar exatamente 24 horas como visto na + string de data/hora (a menos que o horário de início ou fim esteja em um ponto + de transição). + + +format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->modify("+24 hours"); +echo "End: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +?> +]]> + + &example.outputs; + + + + + + + + Adicionar ou substrair períodos pode causar transferência de datas + + Como em 31 de janeiro + 1 mês, irá resultar em 2 de março (em ano bissexto) ou + 3 de março (em ano normal). + + +format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->modify("+1 month"); +echo "Fim: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; + +echo "Ano bissexto:\n"; // fevereiro tem 29 dias +$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York")); +echo "Início: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->modify("+1 month"); +echo "Fim: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +?> +]]> + + &example.outputs; + + + + + PAra obter o último dia do mês seguinte (para evitar a transferência), + o formato last day of está disponível. + + +format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->modify("last day of next month"); +echo "Fim: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; + +echo "Ano bissexto:\n"; // fevereiro tem 29 dias +$dt = new DateTimeImmutable("2016-01-31 00:00:00", new DateTimeZone("America/New_York")); +echo "Início: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +$dt = $dt->modify("last day of next month"); +echo "Fim: ", $dt->format("Y-m-d H:i:s P"), PHP_EOL; +?> +]]> + + &example.outputs; + + + + + +
+ +
+ + diff --git a/reference/datetime/formats.xml b/reference/datetime/formats.xml index 4272cfe9f..00b502377 100644 --- a/reference/datetime/formats.xml +++ b/reference/datetime/formats.xml @@ -174,7 +174,7 @@ object(DateTimeImmutable)#1 (3) { "04", "07", "19" - meridiano + meridian [AaPp] .? [Mm] .? [\0\t ] "A.m.", "pM", "am." diff --git a/reference/datetime/functions/checkdate.xml b/reference/datetime/functions/checkdate.xml index 34cb79f60..1b50e489b 100644 --- a/reference/datetime/functions/checkdate.xml +++ b/reference/datetime/functions/checkdate.xml @@ -3,7 +3,7 @@ checkdate - Valida uma data Gregoriana + Valida uma data gregoriana @@ -15,7 +15,7 @@ intyear - Checa a validade da data formada pelos argumentos. Uma data é considerada + Verifica a validade da data formada pelos argumentos. Uma data é considerada válida se cada parâmetro é adequadamente definido. @@ -36,8 +36,8 @@ day - O dia está dentro do número permitido de dias para um - month. years bissextos são + O dia está dentro do número permitido de dias para o mês + (month). Anos (year) bissextos são levados em consideração. @@ -46,7 +46,7 @@ year - O ano está entre 1 e 32767, incluso. + O ano está entre 1 e 32767, inclusive. diff --git a/reference/datetime/functions/date-default-timezone-set.xml b/reference/datetime/functions/date-default-timezone-set.xml index a09d43893..7b0727b56 100644 --- a/reference/datetime/functions/date-default-timezone-set.xml +++ b/reference/datetime/functions/date-default-timezone-set.xml @@ -48,7 +48,7 @@ &reftitle.returnvalues; A função retorna &false; se o - timezone_identifier não for válido, ou &true; + timezoneId não for válido, ou &true; caso contrário. diff --git a/reference/datetime/functions/date-sunrise.xml b/reference/datetime/functions/date-sunrise.xml index 8366cd29a..6487777a7 100644 --- a/reference/datetime/functions/date-sunrise.xml +++ b/reference/datetime/functions/date-sunrise.xml @@ -227,6 +227,23 @@ echo date("D M d Y"). ', horário do nascer do sol : ' .date_sunrise(time(), SUN + + + + Sem nascer do sol + + +]]> + + &example.outputs; + + diff --git a/reference/datetime/functions/date-sunset.xml b/reference/datetime/functions/date-sunset.xml index 8aecd14f7..be1075656 100644 --- a/reference/datetime/functions/date-sunset.xml +++ b/reference/datetime/functions/date-sunset.xml @@ -30,7 +30,7 @@ floatnullutcOffset&null; - A função date_sunrise retorna o horário do pôr do sol para um + A função date_sunset retorna o horário do pôr do sol para um dia (especificado como um timestamp) e uma localização informados. diff --git a/reference/datetime/functions/gmdate.xml b/reference/datetime/functions/gmdate.xml index 54e0a3fe3..af36d5b9e 100644 --- a/reference/datetime/functions/gmdate.xml +++ b/reference/datetime/functions/gmdate.xml @@ -14,7 +14,7 @@ intnulltimestamp&null; - Idêntica a função date, exceto que + Idêntica à função date, exceto que a hora retornada será baseada no Horário de Greenwich (GMT). diff --git a/reference/datetime/functions/localtime.xml b/reference/datetime/functions/localtime.xml index b0edd45c1..9bedf8f25 100644 --- a/reference/datetime/functions/localtime.xml +++ b/reference/datetime/functions/localtime.xml @@ -184,6 +184,16 @@ Array
+ + + &reftitle.seealso; + + + getdate + + + +
- + strtotime @@ -10,7 +10,7 @@ &reftitle.description; intfalsestrtotime - stringtime + stringdatetime intnullbaseTimestamp&null; @@ -44,7 +44,7 @@ - time + datetime &date.formats.parameter; @@ -191,7 +191,6 @@ if (($timestamp = strtotime($str)) === false) { DateTimeImmutable DateTimeImmutable::createFromFormat Formatos de Data e Hora - DateTime::createFromFormat checkdate strptime diff --git a/reference/datetime/functions/time.xml b/reference/datetime/functions/time.xml index c3b9464e2..87f6bbada 100644 --- a/reference/datetime/functions/time.xml +++ b/reference/datetime/functions/time.xml @@ -14,7 +14,7 @@ Retorna o horário atual medido como o número de segundos desde - a Época Unix (January 1 1970 00:00:00 GMT). + a Época Unix (1 de janeiro de 1970 00:00:00 GMT). @@ -43,7 +43,7 @@ &reftitle.examples; - <function>time</function> example + Exemplo de <function>time</function> O fuso horário padrão usado por todas as funções de data/hora. A ordem de precedência para qual fuso horário será utilizado se nenhum - for explicitamente mencionado é descrita na função date_default_timezone_get. Acesse date_default_timezone_get. Acesse para uma lista de todos os fusos horários suportados. diff --git a/security/sessions.xml b/security/sessions.xml new file mode 100644 index 000000000..f1134ec4e --- /dev/null +++ b/security/sessions.xml @@ -0,0 +1,34 @@ + + + + Segurança da Sessão + + + É importante manter o gerenciamento de sessão HTTP seguro. A segurança + relacionada a sessão está descrita na seção + Segurança de Sessão + da referência Módulo de Sessão. + + + + +