<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sv">
	<id>https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=Using_PHP_and_DTrace</id>
	<title>Using PHP and DTrace - Versionshistorik</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.linux.se/index.php?action=history&amp;feed=atom&amp;title=Using_PHP_and_DTrace"/>
	<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=Using_PHP_and_DTrace&amp;action=history"/>
	<updated>2026-04-28T16:36:48Z</updated>
	<subtitle>Versionshistorik för denna sida på wikin</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://wiki.linux.se/index.php?title=Using_PHP_and_DTrace&amp;diff=4854&amp;oldid=prev</id>
		<title>Admin den 6 oktober 2024 kl. 08.00</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=Using_PHP_and_DTrace&amp;diff=4854&amp;oldid=prev"/>
		<updated>2024-10-06T08:00:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;sv&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Äldre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen från 6 oktober 2024 kl. 08.00&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Rad 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Rad 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;```mediawiki&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Använda PHP och DTrace ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Använda PHP och DTrace ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.linux.se/index.php?title=Using_PHP_and_DTrace&amp;diff=4846&amp;oldid=prev</id>
		<title>Admin: Skapade sidan med &#039;```mediawiki == Använda PHP och DTrace ==  PHP kan konfigureras med DTrace statiska prober på plattformar som stöder DTrace Dynamisk Spårning.  === Konfigurera PHP för DTrace statiska prober ===  Referera till extern plattformspecifik dokumentation för att aktivera operativsystemets DTrace-stöd. Till exempel, på Oracle Linux starta en UEK3-kärna och gör:  &lt;pre&gt;&lt;code&gt;# modprobe fasttrap # chmod 666 /dev/dtrace/helper &lt;/code&gt;&lt;/pre&gt;  Istället för att använda `c...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.linux.se/index.php?title=Using_PHP_and_DTrace&amp;diff=4846&amp;oldid=prev"/>
		<updated>2024-10-06T07:48:31Z</updated>

		<summary type="html">&lt;p&gt;Skapade sidan med &amp;#039;```mediawiki == Använda PHP och DTrace ==  PHP kan konfigureras med DTrace statiska prober på plattformar som stöder DTrace Dynamisk Spårning.  === Konfigurera PHP för DTrace statiska prober ===  Referera till extern plattformspecifik dokumentation för att aktivera operativsystemets DTrace-stöd. Till exempel, på Oracle Linux starta en UEK3-kärna och gör:  &amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;# modprobe fasttrap # chmod 666 /dev/dtrace/helper &amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;  Istället för att använda `c...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny sida&lt;/b&gt;&lt;/p&gt;&lt;div&gt;```mediawiki&lt;br /&gt;
== Använda PHP och DTrace ==&lt;br /&gt;
&lt;br /&gt;
PHP kan konfigureras med DTrace statiska prober på plattformar som stöder DTrace Dynamisk Spårning.&lt;br /&gt;
&lt;br /&gt;
=== Konfigurera PHP för DTrace statiska prober ===&lt;br /&gt;
&lt;br /&gt;
Referera till extern plattformspecifik dokumentation för att aktivera operativsystemets DTrace-stöd. Till exempel, på Oracle Linux starta en UEK3-kärna och gör:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;# modprobe fasttrap&lt;br /&gt;
# chmod 666 /dev/dtrace/helper&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Istället för att använda `chmod` kan du istället använda en ACL-paketregel för att begränsa enhetsåtkomst till en specifik användare.&lt;br /&gt;
&lt;br /&gt;
Bygg PHP med konfigurationsparametern `--enable-dtrace`:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;# ./configure --enable-dtrace ...&lt;br /&gt;
# make&lt;br /&gt;
# make install&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detta aktiverar de statiska probarna i kärn-PHP. Alla PHP-tillägg som tillhandahåller egna prober bör byggas separat som delade tillägg.&lt;br /&gt;
&lt;br /&gt;
=== DTrace statiska prober i kärn-PHP ===&lt;br /&gt;
&lt;br /&gt;
Följande statiska prober är tillgängliga i PHP:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Probe Namn !! Probe Beskrivning !! Probe Argument&lt;br /&gt;
|-&lt;br /&gt;
| request-startup || Avfyras när en förfrågan startar. || char *file, char *request_uri, char *request_method&lt;br /&gt;
|-&lt;br /&gt;
| request-shutdown || Avfyras när en förfrågan avslutas. || char *file, char *request_uri, char *request_method&lt;br /&gt;
|-&lt;br /&gt;
| compile-file-entry || Avfyras när kompileringen av ett skript börjar. || char *compile_file, char *compile_file_translated&lt;br /&gt;
|-&lt;br /&gt;
| compile-file-return || Avfyras när kompileringen av ett skript slutförs. || char *compile_file, char *compile_file_translated&lt;br /&gt;
|-&lt;br /&gt;
| execute-entry || Avfyras när en opcode-array ska köras. Till exempel, avfyras vid funktionsanrop, includes och generatoråterupptaganden. || char *request_file, int lineno&lt;br /&gt;
|-&lt;br /&gt;
| execute-return || Avfyras efter körning av en opcode-array. || char *request_file, int lineno&lt;br /&gt;
|-&lt;br /&gt;
| function-entry || Avfyras när PHP-motorn går in i ett PHP-funktions- eller metodanrop. || char *function_name, char *request_file, int lineno, char *classname, char *scope&lt;br /&gt;
|-&lt;br /&gt;
| function-return || Avfyras när PHP-motorn återvänder från ett PHP-funktions- eller metodanrop. || char *function_name, char *request_file, int lineno, char *classname, char *scope&lt;br /&gt;
|-&lt;br /&gt;
| exception-thrown || Avfyras när ett undantag kastas. || char *classname&lt;br /&gt;
|-&lt;br /&gt;
| exception-caught || Avfyras när ett undantag fångas. || char *classname&lt;br /&gt;
|-&lt;br /&gt;
| error || Avfyras när ett fel uppstår, oavsett nivå för `error_reporting`. || char *errormsg, char *request_file, int lineno&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
PHP-tillägg kan också ha ytterligare statiska prober.&lt;br /&gt;
&lt;br /&gt;
=== Lista DTrace statiska prober i PHP ===&lt;br /&gt;
&lt;br /&gt;
För att lista tillgängliga prober, starta en PHP-process och kör sedan:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;# dtrace -l&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Utskriften kommer att likna:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;   ID   PROVIDER            MODULE                          FUNCTION NAME&lt;br /&gt;
   [ . . . ]&lt;br /&gt;
    4   php15271               php               dtrace_compile_file compile-file-entry&lt;br /&gt;
    5   php15271               php               dtrace_compile_file compile-file-return&lt;br /&gt;
    6   php15271               php                        zend_error error&lt;br /&gt;
    7   php15271               php  ZEND_CATCH_SPEC_CONST_CV_HANDLER exception-caught&lt;br /&gt;
    8   php15271               php     zend_throw_exception_internal exception-thrown&lt;br /&gt;
    9   php15271               php                 dtrace_execute_ex execute-entry&lt;br /&gt;
   10   php15271               php           dtrace_execute_internal execute-entry&lt;br /&gt;
   11   php15271               php                 dtrace_execute_ex execute-return&lt;br /&gt;
   12   php15271               php           dtrace_execute_internal execute-return&lt;br /&gt;
   13   php15271               php                 dtrace_execute_ex function-entry&lt;br /&gt;
   14   php15271               php                 dtrace_execute_ex function-return&lt;br /&gt;
   15   php15271               php              php_request_shutdown request-shutdown&lt;br /&gt;
   16   php15271               php               php_request_startup request-startup&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Värdena i kolumnen Provider består av `php` och process-ID för den för närvarande körande PHP-processen.&lt;br /&gt;
&lt;br /&gt;
Om Apache-webbservern körs, kan modulnamnet till exempel vara `libphp5.so`, och det skulle finnas flera block med listningar, ett per körande Apache-process.&lt;br /&gt;
&lt;br /&gt;
Kolumnen Function hänvisar till PHP:s interna C-implementationsfunktioner där varje provider är lokaliserad.&lt;br /&gt;
&lt;br /&gt;
Om en PHP-process inte körs, visas inga PHP-prober.&lt;br /&gt;
&lt;br /&gt;
=== DTrace med PHP Exempel ===&lt;br /&gt;
&lt;br /&gt;
Detta exempel visar grunderna i DTrace D-skriptsspråket.&lt;br /&gt;
&lt;br /&gt;
==== Exempel #1 all_probes.d för att spåra alla PHP statiska prober med DTrace ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;#!/usr/sbin/dtrace -Zs&lt;br /&gt;
&lt;br /&gt;
#pragma D option quiet&lt;br /&gt;
&lt;br /&gt;
php*:::compile-file-entry&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP compile-file-entry\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  compile_file              %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  compile_file_translated   %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::compile-file-return&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP compile-file-return\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  compile_file              %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  compile_file_translated   %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::error&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP error\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  errormsg                  %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  request_file              %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
    printf(&amp;quot;  lineno                    %d\n&amp;quot;, (int)arg2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::exception-caught&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP exception-caught\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  classname                 %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::exception-thrown&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP exception-thrown\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  classname                 %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::execute-entry&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP execute-entry\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  request_file              %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  lineno                    %d\n&amp;quot;, (int)arg1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::execute-return&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP execute-return\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  request_file              %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  lineno                    %d\n&amp;quot;, (int)arg1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::function-entry&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP function-entry\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  function_name             %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  request_file              %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
    printf(&amp;quot;  lineno                    %d\n&amp;quot;, (int)arg2);&lt;br /&gt;
    printf(&amp;quot;  classname                 %s\n&amp;quot;, copyinstr(arg3));&lt;br /&gt;
    printf(&amp;quot;  scope                     %s\n&amp;quot;, copyinstr(arg4));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::function-return&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP function-return\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  function_name             %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  request_file              %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
    printf(&amp;quot;  lineno                    %d\n&amp;quot;, (int)arg2);&lt;br /&gt;
    printf(&amp;quot;  classname                 %s\n&amp;quot;, copyinstr(arg3));&lt;br /&gt;
    printf(&amp;quot;  scope                     %s\n&amp;quot;, copyinstr(arg4));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::request-shutdown&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP request-shutdown\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  file                      %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  request_uri               %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
    printf(&amp;quot;  request_method            %s\n&amp;quot;, copyinstr(arg2));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
php*:::request-startup&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;PHP request-startup\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  file                      %s\n&amp;quot;, copyinstr(arg0));&lt;br /&gt;
    printf(&amp;quot;  request_uri               %s\n&amp;quot;, copyinstr(arg1));&lt;br /&gt;
    printf(&amp;quot;  request_method            %s\n&amp;quot;, copyinstr(arg2));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detta skript använder `-Z`-alternativet till `dtrace`, vilket tillåter det att köras även när det inte finns någon PHP-process som körs. Om detta alternativ utelämnades skulle skriptet omedelbart avslutas eftersom det vet att ingen av de prober som ska övervakas existerar.&lt;br /&gt;
&lt;br /&gt;
Skriptet spårar alla kärn-PHP statiska probepunkter under hela körningen av ett PHP-skript. Kör D-skriptet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;# ./all_probes.d&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kör ett PHP-skript eller en applikation. Det övervakande D-skriptet kommer att skriva ut varje probes argument när den avfyras.&lt;br /&gt;
&lt;br /&gt;
När övervakningen är klar kan D-skriptet avslutas med CTRL+C.&lt;br /&gt;
&lt;br /&gt;
På maskiner med flera CPU:er kan probeordningen verka icke-sekventiell. Detta beror på vilken CPU som behandlade proberna och hur trådar migrerar över CPU:erna. Att visa probens tidsstämplar hjälper till att minska förvirringen, till exempel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;php*:::function-entry&lt;br /&gt;
{&lt;br /&gt;
      printf(&amp;quot;%lld: PHP function-entry &amp;quot;, walltimestamp);&lt;br /&gt;
      [ . . .]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Jämförbara ämnen ==&lt;br /&gt;
&lt;br /&gt;
* [[OCI8 och DTrace Dynamisk Spårning]]&lt;br /&gt;
&lt;br /&gt;
= Sidslut =&lt;br /&gt;
Orginalhemsidan på Engelska :https://www.php.net/manual/en/features.dtrace.dtrace.php&lt;br /&gt;
&lt;br /&gt;
[[PHP]]&lt;br /&gt;
&lt;br /&gt;
[[Funktioner]] &lt;br /&gt;
[[Kategori:Php]]&lt;br /&gt;
&amp;lt;HR&amp;gt;&lt;br /&gt;
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på &lt;br /&gt;
https://www.linux.se/kontaka-linux-se/&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;Tack till [https://datorhjalp.se Datorhjälp.se] som har  sponsrat Linux.se med webserver.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>