Skip to content

Instantly share code, notes, and snippets.

@nawarian
Last active August 29, 2015 14:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save nawarian/d19a64b3e8f4b5b803ea to your computer and use it in GitHub Desktop.
Save nawarian/d19a64b3e8f4b5b803ea to your computer and use it in GitHub Desktop.
PHP Translation fest 2014
Index: pt_BR/appendices/comparisons.xml
===================================================================
--- pt_BR/appendices/comparisons.xml (revision 335264)
+++ pt_BR/appendices/comparisons.xml (working copy)
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
-<!-- EN-Revision: 311459 Maintainer: fibbarth Status: ready -->
-<!-- CREDITS: narigone -->
+<!-- EN-Revision: 331317 Maintainer: fibbarth Status: ready -->
+<!-- CREDITS: narigone, Nawarian Níckolas -->
<appendix xml:id="types.comparisons" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Tabela de comparações de tipos do PHP</title>
<para>
- As seguintes tabelas demonstram o comportamento no PHP dos
+ As seguintes tabelas demonstram o comportamento do PHP dos
<link linkend="language.types">tipos</link> e
<link linkend="language.operators.comparison">operadores
de comparação</link>, tanto para comparação solta e restrira. Este
@@ -23,7 +23,7 @@
<note>
<para>
Formulários HTML não passam inteiros, floats ou booleanos; eles passam strings.
- Para saber se uma string é um númerico, você pode usar
+ Para saber se uma string é do tipo númerico, você pode usar
<function>is_numeric</function>.
</para>
</note>
@@ -39,7 +39,7 @@
<para>
Alguns operadores númericos podem resultar em um valor representado por uma
constante <constant>NAN</constant>. Quaisquer comparações restritas ou soltas deste valor
- contra qualquer outro valor, incluindo ele mesmo, irá ter como resultado &false;.
+ contra qualquer outro valor, incluindo ele mesmo, terão como resultado &false;.
(por exemplo <literal>NAN != NAN</literal> e <literal>NAN !== NAN</literal>)
Exemplos de operações que geram <constant>NAN</constant> são <literal>sqrt(-1)</literal>,
<literal>asin(2)</literal>, e <literal>asinh(0)</literal>.
@@ -635,4 +635,5 @@
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
--->
\ No newline at end of file
+-->
+
Index: pt_BR/faq/databases.xml
===================================================================
--- pt_BR/faq/databases.xml (revision 0)
+++ pt_BR/faq/databases.xml (revision 0)
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision: 334758 $ -->
+<!-- CREDITS: Nawarian Níckolas -->
+ <chapter xml:id="faq.databases" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>Questões sobre banco de dados</title>
+ <titleabbrev>Questões sobre banco de dados</titleabbrev>
+
+ <para>
+ Esta seção possui questões comuns sobre a relação entre PHP e bases de dados. Sim, PHP pode acessar virtualmente qualquer base de dados disponível atualmente.
+ </para>
+
+ <qandaset>
+ <qandaentry xml:id="faq.databases.mssql">
+ <question>
+ <para>
+ Eu ouvi que é possível acessar Microsoft SQL Server através do PHP. Como?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Em máquinas Windows, você pode simplesmente usar o suporte ODBC já incluso e o driver ODBC correto.
+ </para>
+ <para>
+ Em máquinas UNIX, você pode usar o driver Sybase-CT para acesssar servidores Microsoft SQL porque os protocolos deles (a maioria) compatíveis. Sybase criou uma <link xlink:href="&url.sybase.ctlib;">versão livre das bibliotecas necessárias para sistemas Linux</link>. Para outros sistemas operacionais Unix você precisa contactar Sybase para as bibliotecas corretas.
+ Veja também a resposta para a próxima pergunta.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry xml:id="faq.databases.access">
+ <question>
+ <para>Consigo acessar bases de dados Microsoft Access?</para>
+ </question>
+ <answer>
+ <para>
+ Sim. Você já possui todas as ferramentas que precisa se estiver rodando em ambiente Windows 9x/Me, ou NT/2000, onde você pode usar o driver ODBC e os drivers ODBC para bases de dados Microsoft Access.
+ </para>
+ <para>
+ Se você estiver rodando PHP em uma box Unix e quiser conversar com Microsoft Access em uma box Windows será necessário instalar os drivers ODBC para Unix.
+ <link xlink:href="&url.openlink;">OpenLink Software</link> possui drivers para sistemas Unix-based que podem fazer isto.
+ </para>
+ <para>
+ Outra alternativa é usar um servidor SQL server que possua drivers Windows ODBC e os utilize para armazenar os dados, que você pode então acessar através do Microsoft Access (usando ODBC) e PHP (usando os drivers já existentes), ou usando um formato de arquivo intermediário que Microsoft Access e PHP consigam entender, como arquivos comuns ou bases de dados dBase.
+ Neste ponto Tim Hayes, da OpenLink Software, escreve:
+ <blockquote>
+ <para>
+ Usar outra base de dados como intermédio não é uma boa ideia, quando você pode usar o ODBC do PHP diretamente à base de dados - i.e. com drivers fornecidos pela OpenLink. Se você precisar utilizar um arquivo intermediário, a OpenLink lançou Virtuoso (uma engine de base de dados virtual) para NT, Linux e outras plataformas Unix.
+ Por favor visite <link xlink:href="&url.openlink;">nossa página</link> para um download gratuito.
+ </para>
+ </blockquote>
+ </para>
+ <para>
+ Uma opção que se mostrou funcional é utilizar MySQL e seus drivers MyODBC no Windows e sincronizar as bases de dados.
+ Steve Lawrence
+ disse:
+ </para>
+ <para>
+ <itemizedlist>
+ <listitem>
+ <simpara>
+ Instale MySQL em sua plataforma normalmente.
+ A ultima versão está disponível em <link xlink:href="&url.mysql;">&url.mysql;</link>
+ Nenhuma configuração especial é necessária, exceto quando você configura um database, e configura uma conta de usuário, você deve colocar % no campo host, ou o hostname da máquina Windows que vocẽ deseja acessar através do MySQL. Crie uma note do seu server name, usuário e senha.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Baixe o driver MyODBC para Windows através do site oficil do MySQL.
+ Instale-o em sua máquina Windows. Você pode testar a operação com as utilidades inclusas no programa.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Crie um usuário ou dsn de sistema em seu ODBC Administrator, localizado no painel de controle. Crie um nome dsn, entre com seu hostname, usuário, senha, porta, etc para sua base de dados MySQL configurada no passo 1.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Instale Access com uma instalação completa, isto dá certeza de que você instalou os add-ins necessários... você precisará, ao menos, ter suporte à ODBC e o gerenciador de tabelas ligadas (linked table manager).
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Agora a parte divertida! Crie uma nova base de dados Access. Clique com o botão direito na janela de tabelas e selecione Link Tables, ou sob o menu File selecione Get External Data e depois Link Tables.
+ Quando a caixa de navegação de arquivos aparecer, selecione arquivos do tipo: ODBC.
+ Selecione System dsn eo nome do dsn criado no passo 3.
+ Selecione a tabela para ligar, pressione OK, e presto!
+ Agora você consegue abrir a tabela e adicionar/remover/editar dados em seu MySQL server!
+ Você também pode construir queries, importar/exportar tabelas para MySQL, construir forms e reports, etc.
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Truques e Dicas:
+ <itemizedlist>
+ <listitem>
+ <simpara>
+ Você pode construir suas tabelas no Access e exportá-las para MySQL, então conectá-las de volta. Isto torna o processo de criação de tabelas mais rápido.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Quando criar tabelas no Access você deve definir uma chave primária para ter acesso à escrita na tabela no Access. Certifique-se de que criou uma chave primária no MySQL antes de conectá-lo ao Access.
+ </simpara>
+ </listitem>
+ <listitem>
+ <simpara>
+ Se você alterar a tabela no MySQL, você deve conectar-se novamente ao Access. Vá para tools&gt;add-ins&gt;linked table manager, vá até seu ODBC DSN, e selecione a tabela a conectar novamente através de lá. Você também pode mover seu fonte dsn por alí, apenas selecione o checkbox "always prompt for new location checkbox" antes de pressionar OK.
+ </simpara>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry xml:id="faq.databases.mysql.deprecated">
+ <question>
+ <para>
+ Por que a extensão MySQL (ext/myqsl) que utilizei por mais de 10 anos deve ser evitada? Está depreciada? O que posso usar em seu lugar? Como posso migrar?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Existem três extensões MySQL, como descrito na seção <link linkend="mysqlinfo.api.choosing">Escolhendo uma API MySQL</link>. A antiga API não deve ser utlizada, e um dia será depreciada e, eventualmente, removida do PHP.
+ É uma extensão popular então este será um processo demorado, mas é fortemente recomendado que sejam escritos novos códigos utilizando <link linkend="book.mysqli">mysqli</link> ou <link linkend="ref.pdo-mysql">PDO_MySQL</link>.
+ </para>
+ <para>
+ Scripts de migração não estão disponíveis neste momento, porém a API mysqli possui tanto o formato procedural quanto o orientado a objetos, sendo que o formato procedural é similar ao do ext/mysql.
+ </para>
+ <para>
+ Não é possível misturar as extensões. Então, por exemplo, passar uma conexão mysqli para PDO_MySQL ou ext/mysql não vai funcionar.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry xml:id="faq.databases.mysql.php5">
+ <question>
+ <para>
+ PHP 5 não traz mais consigo as bibliotecas MySQL client, o que isto significa para mim? Eu ainda posso utilizar MySQL no PHP? Ao tentar utilizar MySQL eu recebo erros "function undefined", o que aconteceu?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Sim. Sempre haverá suporte para MySQL no PHP de um jeito ou de outro. A única mudança no PHP 5 é que não será trazida a biblioteca cliente. Algumas das razões:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ A maioria dos sistemas atulamente já possuem a biblioteca instalada.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Dado o item acima, ter múltiplas versões da biblioteca pode ser problemático. Por exemplo, se você ligar mod_auth_mysql à uma versão e o PHP à outra e então habilitar ambas no Apache, você vai receber um lindo e gordo crash. Além disso, a versão trazida no PHP nem sempre funcionava bem com a versão instalada no servidor. O sintoma mais óbvio disto é o desacordo sobre onde encontrar o arquivo mysql.socket no domínio Unix.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A manutenção foi de alguma forma negligenciada e foi caindo mais e mais atrás da versão lançada.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Versões futuras da biblioteca estão sob licença GPL e, portanto, não conseguimos achar uma forma de realizar upgrades visto que não podemos trazer uma biblioteca GPL em um projeto licença estilo BSD/Apache-style. Interromper a biblioteca no PHP 5 pareceu ser a melhor opção.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Na verdade isto não vai afetar tanta gente. Usuários Unix, ao menos os que sabem o que estão fazendo, tendem a compilar PHP utilizando a biblioteca libmysqlclient presente no sistema simplesmente adicionando a opção <option role="configure">--with-mysql/usr</option> quando compilando o PHP. Usuários Windows deverão habilitar a extensão <filename>php_mysql.dll</filename> dentro do &php.ini;.
+ Para mais detalhes, veja a <link linkend="ref.mysql">Referência para MySQL</link> para instruções de instalação. Certifique-se também de que o <filename>libmysql.dll</filename> está disponível na variável de sistema <envar>PATH</envar>.
+ Para mais detalhes em como fazer, leia o FAQ sobre <link linkend="faq.installation.addtopath">Como eu adiciono meu diretório PHP no PATH do Windows?</link>. Por conta de o <filename>libmysql.dll</filename> (e muitos outros arquivos relacionados a PHP) existir na pasta PHP, queira adicionar a pasta do PHP na variável <envar>PATH</envar> de seu sistema.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry xml:id="faq.databases.shared-mysql">
+ <question>
+ <para>
+ Depois de instalar suporte MySQL compartilhado, o Apache despeja erros assim que a libphp4.so é carregada. Como posso consertar isto?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Se suas bibliotecas MySQL estão ligadas através de pthreads isto vai acontecer. Verifique se utilizam ldd. Se estão, pegue o MySQL tarball e compile-o do código-fonte, ou recompile-o através do rpm e remova o switch no arquivo spec que liga o "threaded client code". Estas duas sugestões consertarão isto. Então recompile PHP com as novas bibliotecas MySQL.
+ </para>
+ </answer>
+ </qandaentry>
+
+ <qandaentry xml:id="faq.databases.mysqlresource">
+ <question>
+ <para>
+ Por que recebo um erro que parece com isto:
+ "Warning: 0 is not a MySQL result index in &lt;file&gt;
+ on line &lt;x&gt;" or "Warning: Supplied argument is not
+ a valid MySQL result resource in &lt;file&gt; on line &lt;x&gt;"?
+ </para>
+ </question>
+ <answer>
+ <para>
+ Você está tentando utilizar um result identifier que tem valor 0. O valor 0 indica que sua consulta falhou por algum motivo. Você deverá verificar erros depois de submeter uma consulta e antes de tentar utilizar o result identifier retornado. A forma correta de fazer isto é semelhante à que segue:
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+$result = mysql_query("SELECT * FROM tables_priv");
+if (!$result) {
+ echo mysql_error();
+ exit;
+}
+?>
+]]>
+ </programlisting>
+ or
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+$result = mysql_query("SELECT * FROM tables_priv")
+ or die("Bad query: " . mysql_error());
+?>
+]]>
+ </programlisting>
+ </para>
+ </answer>
+ </qandaentry>
+ </qandaset>
+ </chapter>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
Index: pt_BR/features/connection-handling.xml
===================================================================
--- pt_BR/features/connection-handling.xml (revision 335264)
+++ pt_BR/features/connection-handling.xml (working copy)
@@ -1,15 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision: n/a Maintainer: narigone Status: ready -->
+<!-- $Revision$ -->
+<!-- CREDITS: Nawarian Níckolas -->
<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
<title>Tratamento de Conexões</title>
<para>
- O status de uma conexão é mantido internamente no PHP. Existem 3
+ O status de uma conexão é mantido internamente no PHP. Existem 4
estados possíveis:
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED</simpara></listitem>
<listitem><simpara>2 - TIMEOUT</simpara></listitem>
+ <listitem><simpara>3 - ABORTED and TIMEOUT</simpara></listitem>
</itemizedlist>
</para>
@@ -23,19 +25,19 @@
<simpara>
Você pode decidir se quer ou não que a desconexão do cliente cause
- que seu script seja abortado. As vezes é útil sempre fazer o seu
- script rodar até completar mesmo se não há nenhum navegador remoto recebendo
+ interrupção em seu script. As vezes é útil sempre fazer o seu
+ script rodar até completar mesmo se não houver nenhum navegador remoto recebendo
a saída. O comportamento padrão, no entanto, é de seu script ser
- abortado quando o cliente remoto desconecta. Esse comportamento pode ser
+ interrompido quando o cliente remoto se desconecta. Esse comportamento pode ser
configurado através da diretiva ignore_user_abort &php.ini; assim como pela
- diretiva correspondente do Apache .conf, "php_value ignore_user_abort" ou
+ diretiva correspondente <literal>php_value ignore_user_abort</literal> no &httpd.conf; do Apache ou
com a função <function>ignore_user_abort</function>. Se você não disser
para o PHP ignorar o abort do usuário e ele abortar, seu script
- será finalizado. A única exceção é se você tiver registrado uma função
+ será encerrado. A única exceção é se você tiver registrado uma função
de finalização usando <function>register_shutdown_function</function>. Com uma
função de finalização, quando um usuário remoto clica no botão STOP, a
próxima vez que seu script tentar gerar alguma saída, o PHP detectará que
- a conexão foi abortada e a função de finalização é chamada.
+ a conexão foi cancelada e a função de finalização é chamada.
Essa função de finalização também será chamada no fim do seu script
mesmo terminando normalmente, então para fazer algo diferente caso o cliente
desconecte, você pode usar a função <function>connection_aborted</function>.
@@ -44,25 +46,24 @@
<simpara>
Seu script também pode ser finalizado pelo timer interno.
- O tempo limite padrão é de 30 segundos. Pode ser mudado usando a
- diretiva <option>max_execution_time</option> &php.ini; ou a diretiva do
- Apache .conf correspondente <literal>php_value max_execution_time</literal> assim como com
+ O tempo limite padrão é de 30 segundos. Podendo ser mudado usando a
+ diretiva <option>max_execution_time</option> &php.ini; ou a diretiva correspondente no &httpd.conf; do Apache <literal>php_value max_execution_time</literal> assim como com
a função <function>set_time_limit</function>. Quando o timer
- chega ao limite, o script será abortado e assim como o caso acima
- de desconexão, se uma função de finalização foi registrada, ela será
+ chega ao limite o script será abortado e assim como o caso acima
+ de desconexão pelo cliente, se uma função de finalização foi registrada, ela será
chamada. Dentro da função de finalização você pode checar se a
causa da finalização foi estouro do tempo limite chamando a
- função <function>connection_timeout</function>. Essa função retornará
- &true; se o a função de finalização foi chamada pelo tempo ter acabado.
+ função <function>connection_status</function>. Essa função retornará
+ 2 se a causa foi exceder o tempo limite.
</simpara>
<simpara>
Uma coisa a ser notada é que ambos os estados ABORTED e TIMEOUT
podem estar ligados ao mesmo tempo. Isso é possível se você disser
- ao PHP para ignorar o abort do usuário. O PHP continuará a notar o fato que
+ ao PHP para ignorar o abort do usuário causou. PHP continuará a perceber o fato que
o usuário pode ter quebrado a conexão, mas o script continuará
executando. Se então ele alcançar o tempo limite, ele será abortado e
- sua função de finalização, se houver, será chamada. Nesse ponto,
+ sua função de finalização, se existente, será chamada. Nesse ponto,
você terá que <function>connection_status</function>
retorna 3.
</simpara>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment