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

Користење PHP и DTrace

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

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

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

features.dtrace.dtrace.php

Користење PHP и DTrace

PHP can be configured with DTrace static probes on platforms that support DTrace Dynamic Tracing.

PHP може да се конфигурира со статични DTrace сонди на платформи што поддржуваат DTrace динамично трасирање.

Конфигурирање на PHP за статични DTrace сонди

# modprobe fasttrap
# chmod 666 /dev/dtrace/helper

Погледнете ја надворешната платформа специфична документација за овозможување на поддршката за DTrace на оперативниот систем. На пример, на Oracle Linux стартувајте UEK3 јадро и направете: chmodНаместо да користите

, може да користите правило за ACL пакет за да го ограничите пристапот до уредот до специфичен корисник. --enable-dtrace Изградете PHP со

# ./configure --enable-dtrace ...
# make
# make install

параметар за конфигурација:

Ова ги прави статичните сонди достапни во основното PHP. Секое PHP проширување што обезбедува свои сонди треба да се гради одделно како споделени проширувања. За да ги овозможите сондите, поставете USE_ZEND_DTRACE=1

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

променлива на околината на целните PHP процеси.
Име на сонда Опис на сонда Аргументи на сонда
request-startup Следниве статични сонди се достапни во PHP Се активира кога започнува барање.filechar *request_urichar *request_method
request-shutdown , char * Се активира кога започнува барање.filechar *request_urichar *request_method
compile-file-entry Се активира кога завршува барањето. Се активира кога започнува барање.compile_filechar *compile_file_translated
compile-file-return Се активира кога започнува компилацијата на скрипта. Се активира кога започнува барање.compile_filechar *compile_file_translated
execute-entry Се активира кога завршува компилацијата на скрипта. Се активира кога започнува барање.request_fileСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. lineno
execute-return PHP може да се конфигурира со статични DTrace сонди на платформи што поддржуваат DTrace динамично трасирање. Се активира кога започнува барање.request_fileСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. lineno
function-entry Се активира по извршување на низа од opcode. Се активира кога започнува барање.function_namechar *request_fileСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. linenochar *classnamechar *scope
function-return Се активира кога PHP енџинот влегува во повик на PHP функција или метод. Се активира кога започнува барање.function_namechar *request_fileСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. linenochar *classnamechar *scope
exception-thrown Се активира кога PHP енџинот се враќа од повик на PHP функција или метод. Се активира кога започнува барање.classname
exception-caught Се активира кога ќе се фрли исклучок. Се активира кога започнува барање.classname
error Се активира кога ќе се фати исклучок. error_reporting level. Се активира кога започнува барање.errormsgchar *request_fileСе активира кога треба да се изврши низа од опкодови. На пример, се активира при повици на функции, вклучувања и продолжувања на генератори. lineno

Се активира кога ќе се случи грешка, без оглед на

PHP екстензиите исто така може да имаат дополнителни статични сонди.

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

# dtrace -l

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

   ID   PROVIDER            MODULE                          FUNCTION NAME
   [ . . . ]
    4   php15271               php               dtrace_compile_file compile-file-entry
    5   php15271               php               dtrace_compile_file compile-file-return
    6   php15271               php                        zend_error error
    7   php15271               php  ZEND_CATCH_SPEC_CONST_CV_HANDLER exception-caught
    8   php15271               php     zend_throw_exception_internal exception-thrown
    9   php15271               php                 dtrace_execute_ex execute-entry
   10   php15271               php           dtrace_execute_internal execute-entry
   11   php15271               php                 dtrace_execute_ex execute-return
   12   php15271               php           dtrace_execute_internal execute-return
   13   php15271               php                 dtrace_execute_ex function-entry
   14   php15271               php                 dtrace_execute_ex function-return
   15   php15271               php              php_request_shutdown request-shutdown
   16   php15271               php               php_request_startup request-startup

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

Список на статични DTrace сонди во PHP libphp5.soАко работи веб-серверот Apache, името на модулот може да биде, на пример,

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

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

, и би имало повеќе блокови со списоци, еден за секој активен Apache процес.

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

Пример #1 all_probes.d Пример за DTrace со PHP

#!/usr/sbin/dtrace -Zs

#pragma D option quiet

php*:::compile-file-entry
{
    printf("PHP compile-file-entry\n");
    printf("  compile_file              %s\n", copyinstr(arg0));
    printf("  compile_file_translated   %s\n", copyinstr(arg1));
}

php*:::compile-file-return
{
    printf("PHP compile-file-return\n");
    printf("  compile_file              %s\n", copyinstr(arg0));
    printf("  compile_file_translated   %s\n", copyinstr(arg1));
}

php*:::error
{
    printf("PHP error\n");
    printf("  errormsg                  %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
}

php*:::exception-caught
{
    printf("PHP exception-caught\n");
    printf("  classname                 %s\n", copyinstr(arg0));
}

php*:::exception-thrown
{
    printf("PHP exception-thrown\n");
    printf("  classname                 %s\n", copyinstr(arg0));
}

php*:::execute-entry
{
    printf("PHP execute-entry\n");
    printf("  request_file              %s\n", copyinstr(arg0));
    printf("  lineno                    %d\n", (int)arg1);
}

php*:::execute-return
{
    printf("PHP execute-return\n");
    printf("  request_file              %s\n", copyinstr(arg0));
    printf("  lineno                    %d\n", (int)arg1);
}

php*:::function-entry
{
    printf("PHP function-entry\n");
    printf("  function_name             %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
    printf("  classname                 %s\n", copyinstr(arg3));
    printf("  scope                     %s\n", copyinstr(arg4));
}

php*:::function-return
{
    printf("PHP function-return\n");
    printf("  function_name             %s\n", copyinstr(arg0));
    printf("  request_file              %s\n", copyinstr(arg1));
    printf("  lineno                    %d\n", (int)arg2);
    printf("  classname                 %s\n", copyinstr(arg3));
    printf("  scope                     %s\n", copyinstr(arg4));
}

php*:::request-shutdown
{
    printf("PHP request-shutdown\n");
    printf("  file                      %s\n", copyinstr(arg0));
    printf("  request_uri               %s\n", copyinstr(arg1));
    printf("  request_method            %s\n", copyinstr(arg2));
}

php*:::request-startup
{
    printf("PHP request-startup\n");
    printf("  file                      %s\n", copyinstr(arg0));
    printf("  request_uri               %s\n", copyinstr(arg1));
    printf("  request_method            %s\n", copyinstr(arg2));
}

Оваа скрипта ја користи -Z опција на dtraceза следење на сите PHP статични сонди со DTrace

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

# ./all_probes.d

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

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

Стартувајте PHP скрипта или апликација. Скриптата за следење D ќе ги прикаже аргументите на секоја сондирана точка додека се активира.

php*:::function-entry
{
      printf("%lld: PHP function-entry ", walltimestamp);
      [ . . .]
}

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

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

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

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

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

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

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