PHP.mk документација

OCI8 и DTrace динамично следење

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

oci8.dtrace.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека oci8.dtrace.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
OCI8 и DTrace динамично следење

Референца за `oci8.dtrace.php` со подобрена типографија и навигација.

oci8.dtrace.php

OCI8 и DTrace динамично следење

OCI8 2.0 воведе статични DTrace сонди кои можат да се користат на оперативни системи кои поддржуваат DTrace. Видете DTrace Динамичко следење за преглед на PHP и DTrace.

Инсталирање на OCI8 со поддршка за DTrace

За да овозможите поддршка за DTrace во PHP OCI8, изградете го OCI8 како заедничка екстензија откако ќе го поставите PHP_DTRACE.

$ export PHP_DTRACE=yes
$ pecl install oci8

Уредете го php.ini, поставете extension_dir до директориумот со креираното oci8.so и исто така овозможете ја екстензијата со додавање:

extension=oci8.so

Ако го инсталирате PHP OCI8 од PECL користејќи phpize and configure (наместо pecl), сè уште ќе треба да го поставите PHP_DTRACE=yes. Ова е затоа што --enable-dtrace опцијата ќе биде игнорирана од ограничениот configure скрипта на PECL пакет.

Константи за известување за грешки Инсталација на PECL екстензии за општите упатства за инсталација на PECL.

Статични DTrace сонди во PHP OCI8

Следниве статични сонди се достапни во PHP OCI8
Име на сонда Опис на сонда Аргументи на сонда
oci8-connect-entry Иницирано од oci_connect(), oci_pconnect() и oci_new_connect(). Се активира пред да се воспостави конекција со базата на податоци. Се активира кога започнува барање.usernamechar *dbnamechar *charset, long session_modeСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. persistentСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. exclusive
oci8-connect-return Се пали на крајот од конекцијата. void *connection
oci8-check-connection Се пали ако грешка во Oracle можеби ја направила конекцијата невалидна. void *connectionchar *client_idСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. is_open, long errcode, unsigned long server_status
oci8-sqltext Се пали кога ќе се изврши oci_parse(). void *connectionchar *client_id, void *statementchar *sql
oci8-connection-close Се пали кога конекцијата со базата на податоци е целосно уништена. void *connection
oci8-error Се пали ако се случи грешка во Oracle. int status, long errcode
oci8-execute-mode Се пали на oci_execute() за прикажување на режимот на извршување. void *connectionchar *client_id, void *statement, unsigned int mode

Овие сонди се корисни за следење на OCI8 скрипти.

На connection and statement се покажувачи кон внатрешни структури што се користат за следење на PHP конекциите и извршените изјави.

На client_id е вредноста поставена од oci_set_client_identifier().

Основното PHP исто така има статични сонди. Види Статични сонди на DTrace во основното PHP.

Внатрешно дебагирање DTrace сонди во OCI8
Име на сонда
oci8-connect-expiry
oci8-connect-lookup
oci8-connect-p-dtor-close
oci8-connect-p-dtor-release
oci8-connect-type
oci8-sesspool-create
oci8-sesspool-stats
oci8-sesspool-type

Овие сонди се корисни за одржувачите на OCI8. Погледнете го изворниот код на OCI8 за аргументи и за да видите кога ќе се активираат.

Наведување статични DTrace сонди во PHP OCI8

За да ги наведете достапните сонди, стартувајте PHP процес и потоа извршете:

# dtrace -l

Излезот ќе биде сличен на:

   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

Вредностите во колоната Провајдер се состојат од phpoci и идентификаторот на процесот на моментално активниот PHP процес.

Колоната Функција се однесува на имињата на функциите за имплементација на C на PHP каде што се наоѓа секој провајдер.

Ако PHP процес не работи, тогаш нема да бидат прикажани PHP сонди.

Пример за DTrace со PHP OCI8

Овој пример ги покажува основите на скриптниот јазик DTrace D.

Пример #1 user_oci8_probes.d за следење на сите статични сонди на PHP OCI8 на ниво на корисник со DTrace

#!/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);
}

Оваа скрипта ја користи -Z опција на dtrace, дозволувајќи ѝ да се извршува кога нема активен PHP процес. Ако оваа опција беше изоставена, скриптата веднаш би завршила кога немаше да работи извршна програма на PHP бидејќи знае дека ниту една од сондите што треба да се следат не постои.

На машини со повеќе процесори, редоследот на сондите можеби нема да изгледа секвенцијален. Ова зависи од тоа кој процесор ги обработувал сондите и како нишките мигрираат низ процесорите. Прикажувањето временски ознаки на сондите помага да се намали забуната.

Скриптата ги следи сите точки на статични сонди на PHP OCI8 на ниво на корисник во текот на извршувањето на PHP скрипта. Извршете ја D скриптата:

# ./user_oci8_probes.d

Извршете PHP скрипта или апликација. D скриптата за следење ќе ги прикаже аргументите на секоја сонда додека се активира. На пример, едноставна PHP скрипта што бара податоци од табела може да произведе следниот излез од трасирање:

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

Кога следењето е завршено, D скриптата може да се прекине со CTRL+C.

Види Исто така

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.