<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.dtrace.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'features.dtrace.introduction.php',
    1 => 'Введение в PHP и DTrace',
    2 => 'Введение в PHP и DTrace',
  ),
  'up' => 
  array (
    0 => 'features.dtrace.php',
    1 => 'Динамическая трассировка DTrace',
  ),
  'prev' => 
  array (
    0 => 'features.dtrace.php',
    1 => 'Динамическая трассировка DTrace',
  ),
  'next' => 
  array (
    0 => 'features.dtrace.dtrace.php',
    1 => 'PHP и DTrace',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'features/dtrace.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.dtrace.introduction" class="sect1">
  <h2 class="title">Введение в PHP и DTrace</h2>

  <p class="para">
   DTrace — доступный фреймворк трассировки, который практически
   не потребляет ресурсов. Фреймворк
   доступен на множестве платформ, включая Solaris, macOS,
   Oracle Linux и BSD. DTrace умеет отслеживать поведение
   операционной системы и запущенных пользовательских
   приложений. Фреймворк умеет показывать значения параметров
   и выводит статистику производительности.
   Зонды отслеживаются пользовательскими скриптами,
   которые написали на скриптовом языке DTrace D. Это помогает
   эффективно анализировать срезы данных.
  </p>

  <p class="para">
   Зонды PHP, которые не отслеживаются пользовательскими
   скриптами DTrace D, не содержат дополнительного
   кода и поэтому во время нормальной работы
   приложения производительность
   не деградирует. Отслеживаемые зонды, в свою очередь,
   дают очень низкую просадку производительности, что
   позволяет использовать их в промышленных средах.
  </p>

  <p class="para">
   PHP включает в себя зонды «Статически определённой
   трассировки уровня пользователя» (User-level Statically
   Defined Tracing, или USDT), которые работают во время
   исполнения. Например, когда D-скрипт отслеживает зонд
   <code class="literal">function-entry</code>, каждый раз при вызове
   функции этот зонд запускает действие D-скрипта, которое соответствует
   функции. Это действие, например, печатает аргументы
   зонда наподобие расположения этой функции в PHP-скрипте.
   Или же агрегирует данные наподобие
   количества запусков каждой функции.
  </p>

  <p class="para">
   Здесь описываются только зонды PHP USDT. Информацию
   об отслеживании произвольных функций
   и поведения операционной системы даёт
   литература, специфичная для каждой
   операционной системы, и внешняя полноценная
   документация DTrace. Обратите внимание, что
   реализации DTrace иногда отличаются набором доступного
   функционала.
  </p>

  <p class="para">
   Статические зонды DTrace в PHP также умеют
   работать со средством SystemTap в отдельных дистрибутивах ОС Linux.
  </p>
 </div><?php manual_footer($setup); ?>