mirror of
https://github.com/php/doc-pt_br.git
synced 2026-03-23 22:52:12 +01:00
initial translation of oci8/dtrace
This commit is contained in:
406
reference/oci8/dtrace.xml
Normal file
406
reference/oci8/dtrace.xml
Normal file
@@ -0,0 +1,406 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: f4c44b86948f70a7e89f582b500e2595452e00f0 Maintainer: leonardolara Status: ready -->
|
||||
<chapter xml:id="oci8.dtrace" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>OCI8 e Rastreamento dinâmico DTrace</title>
|
||||
<para>
|
||||
O OCI8 2.0 introduziu sondas DTrace estáticas que podem ser usadas em
|
||||
sistemas operacionais compatíveis com o DTrace.
|
||||
Consulte <link linkend="features.dtrace">Rastreamento Dinâmico DTrace</link>
|
||||
para obter uma visão geral do PHP e do DTrace.
|
||||
</para>
|
||||
|
||||
<section>
|
||||
<title>Instalando OCI8 com suporte a DTrace</title>
|
||||
<para>
|
||||
Para habilitar o suporte a DTrace no PHP OCI8, o OCI8 deve ser compilado como uma extensão
|
||||
compartilhada após a definição de <literal>PHP_DTRACE</literal>.
|
||||
</para>
|
||||
<para>
|
||||
<informalexample>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
$ export PHP_DTRACE=yes
|
||||
$ pecl install oci8
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
<para>
|
||||
Edite o php.ini,
|
||||
defina <link linkend="ini.extension-dir">extension_dir</link> para o
|
||||
diretório que contém o <filename>oci8.so</filename> criado e também
|
||||
habilite a extesão adicionando:
|
||||
</para>
|
||||
<para>
|
||||
<informalexample>
|
||||
<screen>
|
||||
<![CDATA[
|
||||
extension=oci8.so
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
<para>
|
||||
Se o PHP OCI8 for instalado a partir do PECL usando <filename>phpize</filename> e
|
||||
<filename>configure</filename> (ao invés
|
||||
de <filename>pecl</filename>), ainda será necessário definir
|
||||
<literal>PHP_DTRACE=yes</literal>. Isto acontece porque
|
||||
a opção <literal>--enable-dtrace</literal> será ignorada pelo
|
||||
script <filename>configure</filename> limitado de um pacote PECL.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Consulte <link linkend="install.pecl">Instalação de extensões
|
||||
PECL</link> para intruções gerais de instalação via PECL.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Sondas Estáticas DTrace no PHP OCI8</title>
|
||||
<table>
|
||||
<title>As seguintes sondas estáticas estão disponíveis no PHP OCI8</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Nome da Sonda</entry>
|
||||
<entry>Descrição da Sonda</entry>
|
||||
<entry>Argumentos da Sonda</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-entry</literal></entry>
|
||||
<entry>Iniciada por oci_connect(), oci_pconnect() e oci_new_connect(). É ativada antes da conexão ao banco de dados ser estabelecida.</entry>
|
||||
<entry>char *<varname>username</varname>, char *<varname>dbname</varname>, char *<varname>charset</varname>, long <varname>session_mode</varname>, int <varname>persistent</varname>, int <varname>exclusive</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-return</literal></entry>
|
||||
<entry>É ativada no final da conexão.</entry>
|
||||
<entry>void *<varname>connection</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-check-connection</literal></entry>
|
||||
<entry>É ativada se um erro Oracle possa ter tornado a conexão inválida.</entry>
|
||||
<entry>void *<varname>connection</varname>, char *<varname>client_id</varname>, int <varname>is_open</varname>, long <varname>errcode</varname>, unsigned long <varname>server_status</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-sqltext</literal></entry>
|
||||
<entry>É ativada quando oci_parse() é executada.</entry>
|
||||
<entry>void *<varname>connection</varname>, char *<varname>client_id</varname>, void *<varname>statement</varname>, char *<varname>sql</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connection-close</literal></entry>
|
||||
<entry>É ativada quando a conexão ao banco de dados é completamente destruída.</entry>
|
||||
<entry>void *<varname>connection</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-error</literal></entry>
|
||||
<entry>É ativada se um erro Oracle ocorrer.</entry>
|
||||
<entry>int <varname>status</varname>, long <varname>errcode</varname></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-execute-mode</literal></entry>
|
||||
<entry>É ativada na função <function>oci_execute</function> para mostrar o modo de execução.</entry>
|
||||
<entry>void *<varname>connection</varname>, char *<varname>client_id</varname>, void *<varname>statement</varname>, unsigned int <varname>mode</varname></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<para>
|
||||
Estas sondas são úteis para rastrear scripts OCI8.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
As variáveis <varname>connection</varname> e <varname>statement</varname>
|
||||
são ponteiros para estruturas internas usados para rastrear
|
||||
conexões e instruções executadas do PHP.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A variável <varname>client_id</varname> é o valor definido
|
||||
por <function>oci_set_client_identifier</function>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
O núcleo do PHP também tem sondas estáticas.
|
||||
Consulte <link linkend="features.dtrace.static-probes">Sondas Estáticas
|
||||
DTrace no Núcleo do PHP</link>.
|
||||
</para>
|
||||
|
||||
<table>
|
||||
<title>Sondas DTrace Internas de Depuração no OCI8</title>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Nome da Sonda</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-expiry</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-lookup</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-p-dtor-close</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-p-dtor-release</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-connect-type</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-sesspool-create</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-sesspool-stats</literal></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>oci8-sesspool-type</literal></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<para>
|
||||
Estas sondas são úteis para mantenedores do OCI8. Consulte o código-fonte para argumentos e para ver quando elas serão ativadas.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Listando Sondas Estáticas DTrace no PHP OCI8</title>
|
||||
<para>
|
||||
Para listar sondas disponíveis, inicie um processo PHP e depois execute:
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
# dtrace -l
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
O resultado será similar a:
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
ID PROVIDER MODULE FUNCTION NAME
|
||||
[ . . . ]
|
||||
17 phpoci22116 oci8.so php_oci_dtrace_check_connection oci8-check-connection
|
||||
18 phpoci22116 oci8.so php_oci_do_connect oci8-connect-entry
|
||||
19 phpoci22116 oci8.so php_oci_persistent_helper oci8-connect-expiry
|
||||
20 phpoci22116 oci8.so php_oci_do_connect_ex oci8-connect-lookup
|
||||
21 phpoci22116 oci8.so php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-close
|
||||
22 phpoci22116 oci8.so php_oci_pconnection_list_np_dtor oci8-connect-p-dtor-release
|
||||
23 phpoci22116 oci8.so php_oci_do_connect oci8-connect-return
|
||||
24 phpoci22116 oci8.so php_oci_do_connect_ex oci8-connect-type
|
||||
25 phpoci22116 oci8.so php_oci_connection_close oci8-connection-close
|
||||
26 phpoci22116 oci8.so php_oci_error oci8-error
|
||||
27 phpoci22116 oci8.so php_oci_statement_execute oci8-execute-mode
|
||||
28 phpoci22116 oci8.so php_oci_create_spool oci8-sesspool-create
|
||||
29 phpoci22116 oci8.so php_oci_create_session oci8-sesspool-stats
|
||||
30 phpoci22116 oci8.so php_oci_create_session oci8-sesspool-type
|
||||
31 phpoci22116 oci8.so php_oci_statement_create oci8-sqltext
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Os valores da coluna PROVIDER consistem no prefixo <literal>phpoci</literal> e
|
||||
o ID fo processo PHP atual.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
A coluna FUNCTION refere-se aos nomes de função da implementação C
|
||||
interna do PHP onde cada provedor está localizado.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Se um processo PHP não estiver em execução, nenhuma sonda PHP será exibida.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Exemplo de DTrace com PHP OCI8</title>
|
||||
<para>
|
||||
Este exemplo mostra o básico da linguagem de script D do DTrace.
|
||||
<example>
|
||||
<title><filename>user_oci8_probes.d</filename> para rastrear todas as Sondas Estáticas PHP OCI8 em nível de usuário com DTrace</title>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
#!/usr/sbin/dtrace -Zs
|
||||
|
||||
#pragma D option quiet
|
||||
|
||||
php*:::oci8-connect-entry
|
||||
{
|
||||
printf("%lld: PHP connect-entry\n", walltimestamp);
|
||||
printf(" credentials=\"%s@%s\"\n", arg0 ? copyinstr(arg0) : "", arg1 ? copyinstr(arg1) : "");
|
||||
printf(" charset=\"%s\"\n", arg2 ? copyinstr(arg2) : "");
|
||||
printf(" session_mode=%ld\n", (long)arg3);
|
||||
printf(" persistent=%d\n", (int)arg4);
|
||||
printf(" exclusive=%d\n", (int)arg5);
|
||||
}
|
||||
|
||||
php*:::oci8-connect-return
|
||||
{
|
||||
printf("%lld: PHP oci8-connect-return\n", walltimestamp);
|
||||
printf(" connection=0x%p\n", (void *)arg0);
|
||||
}
|
||||
|
||||
php*:::oci8-connection-close
|
||||
{
|
||||
printf("%lld: PHP oci8-connect-close\n", walltimestamp);
|
||||
printf(" connection=0x%p\n", (void *)arg0);
|
||||
}
|
||||
|
||||
php*:::oci8-error
|
||||
{
|
||||
printf("%lld: PHP oci8-error\n", walltimestamp);
|
||||
printf(" status=%d\n", (int)arg0);
|
||||
printf(" errcode=%ld\n", (long)arg1);
|
||||
}
|
||||
|
||||
php*:::oci8-check-connection
|
||||
{
|
||||
printf("%lld: PHP oci8-check-connection\n", walltimestamp);
|
||||
printf(" connection=0x%p\n", (void *)arg0);
|
||||
printf(" client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
|
||||
printf(" is_open=%d\n", arg2);
|
||||
printf(" errcode=%ld\n", (long)arg3);
|
||||
printf(" server_status=%lu\n", (unsigned long)arg4);
|
||||
}
|
||||
|
||||
php*:::oci8-sqltext
|
||||
{
|
||||
printf("%lld: PHP oci8-sqltext\n", walltimestamp);
|
||||
printf(" connection=0x%p\n", (void *)arg0);
|
||||
printf(" client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
|
||||
printf(" statement=0x%p\n", (void *)arg2);
|
||||
printf(" sql=\"%s\"\n", arg3 ? copyinstr(arg3) : "");
|
||||
}
|
||||
|
||||
php*:::oci8-execute-mode
|
||||
{
|
||||
printf("%lld: PHP oci8-execute-mode\n", walltimestamp);
|
||||
printf(" connection=0x%p\n", (void *)arg0);
|
||||
printf(" client_id=\"%s\"\n", arg1 ? copyinstr(arg1) : "");
|
||||
printf(" statement=0x%p\n", (void *)arg2);
|
||||
printf(" mode=0x%x\n", arg3);
|
||||
}
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Este script usa a opção <literal>-Z</literal> para
|
||||
<filename>dtrace</filename>, permitindo que ele seja executado quando não houver
|
||||
processo PHP em execução. Se esta opção fosse omitida, o script
|
||||
terminaria imediatamente quando nenhum executável do PHP estivesse em execução
|
||||
porque ele sabe que nenhuma das sondas a serem monitoradas
|
||||
existiriam.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Em máquinas com múltiplas CPUs, a ordem das sondas pode não parecer
|
||||
sequencial. Isto depende de qual CPU está processando as sondas,
|
||||
e como os threads migram através dos CPUs. Exibir o horário de cada sonda
|
||||
ajuda a reduzir a confusão.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
O script rastreia todos os pontos de sondas estáticas do PHP OCI8 em nível de usuário,
|
||||
durante toda a execução do script PHP. Execute o script D:
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
# ./user_oci8_probes.d
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Execute uma aplicação ou um script PHP. O script D de monitoramento
|
||||
exeubirá os argumentos de cada sonda assim que ativada. Por exemplo, um simples
|
||||
script PHP que consulta uma tabela pode produzir o seguinte resultado de
|
||||
rastreamento:
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
1381794982092854582: PHP connect-entry
|
||||
credentials="hr@localhost/pdborcl"
|
||||
charset=""
|
||||
session_mode=0
|
||||
persistent=0
|
||||
exclusive=0
|
||||
1381794982183158766: PHP oci8-connect-return
|
||||
connection=0x7f4a7907bfb8
|
||||
1381794982183594576: PHP oci8-sqltext
|
||||
connection=0x7f4a7907bfb8
|
||||
client_id="Chris"
|
||||
statement=0x7f4a7907c2a0
|
||||
sql="select * from employees"
|
||||
1381794982183783706: PHP oci8-execute-mode
|
||||
connection=0x7f4a7907bfb8
|
||||
client_id="Chris"
|
||||
statement=0x7f4a7907c2a0
|
||||
mode=0x20
|
||||
1381794982444344390: PHP oci8-connect-close
|
||||
connection=0x7f4a7907bfb8
|
||||
]]>
|
||||
</programlisting>
|
||||
</informalexample>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Quando o monitoramento estiver concluído, o script D pode ser encerrado com um
|
||||
<keycombo action='simul'><keycap>CTRL</keycap><keycap>C</keycap></keycombo>.
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
&reftitle.seealso;
|
||||
<simplelist>
|
||||
<member><link linkend="features.dtrace">Rastreamento Dinâmico DTrace</link></member>
|
||||
</simplelist>
|
||||
</section>
|
||||
|
||||
</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
|
||||
-->
|
||||
|
||||
Reference in New Issue
Block a user