mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-20 02:48:56 +00:00
105 lines
3.2 KiB
XML
105 lines
3.2 KiB
XML
![]() |
<?xml version="1.0" encoding="iso-8859-1"?>
|
||
|
<!-- $Revision: 1.2 $ -->
|
||
|
|
||
|
<appendix xml:id="apd.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
|
&reftitle.examples;
|
||
|
<section xml:id="apd.examples.usage">
|
||
|
<title>How to use PHP-APD in your scripts</title>
|
||
|
<procedure>
|
||
|
<step>
|
||
|
<para>
|
||
|
As the first line of your PHP script, call the apd_set_pprof_trace() function
|
||
|
to start the trace:
|
||
|
</para>
|
||
|
<para>
|
||
|
<programlisting role="php">
|
||
|
<![CDATA[
|
||
|
apd_set_pprof_trace();
|
||
|
]]>
|
||
|
</programlisting>
|
||
|
</para>
|
||
|
<para>
|
||
|
You can insert the line anywhere in your script, but if you do not start
|
||
|
tracing at the beginning of your script you discard profile data that might
|
||
|
otherwise lead you to a performance bottleneck.
|
||
|
</para>
|
||
|
</step>
|
||
|
<step>
|
||
|
<para>
|
||
|
Now run your script. The dump output will be written to
|
||
|
<filename>apd.dumpdir/pprof_pid.ext</filename>.
|
||
|
<tip>
|
||
|
<para>
|
||
|
If you're running the CGI version of PHP, you will need to add the '-e'
|
||
|
flag to enable extended information for apd to work properly. For
|
||
|
example:
|
||
|
<userinput>php -e -f script.php</userinput>
|
||
|
</para>
|
||
|
</tip>
|
||
|
</para>
|
||
|
</step>
|
||
|
<step>
|
||
|
<para>
|
||
|
To display formatted profile data, issue the <command>pprofp</command>
|
||
|
command with the sort and display options of your choice. The formatted
|
||
|
output will look something like:
|
||
|
<screen>
|
||
|
<![CDATA[
|
||
|
bash-2.05b$ pprofp -R /tmp/pprof.22141.0
|
||
|
|
||
|
Trace for /home/dan/testapd.php
|
||
|
Total Elapsed Time = 0.00
|
||
|
Total System Time = 0.00
|
||
|
Total User Time = 0.00
|
||
|
|
||
|
|
||
|
Real User System secs/ cumm
|
||
|
%Time (excl/cumm) (excl/cumm) (excl/cumm) Calls call s/call Memory Usage Name
|
||
|
--------------------------------------------------------------------------------------
|
||
|
100.0 0.00 0.00 0.00 0.00 0.00 0.00 1 0.0000 0.0009 0 main
|
||
|
56.9 0.00 0.00 0.00 0.00 0.00 0.00 1 0.0005 0.0005 0 apd_set_pprof_trace
|
||
|
28.0 0.00 0.00 0.00 0.00 0.00 0.00 10 0.0000 0.0000 0 preg_replace
|
||
|
14.3 0.00 0.00 0.00 0.00 0.00 0.00 10 0.0000 0.0000 0 str_replace
|
||
|
]]>
|
||
|
</screen>
|
||
|
</para>
|
||
|
<para>
|
||
|
The -R option used in this example sorts the profile table by the amount
|
||
|
of real time the script spent executing a given function. The "cumm call"
|
||
|
column reveals how many times each function was called, and the "s/call"
|
||
|
column reveals how many seconds each call to the function required, on
|
||
|
average.
|
||
|
</para>
|
||
|
</step>
|
||
|
<step>
|
||
|
<para>
|
||
|
To generate a calltree file that you can import into the KCacheGrind
|
||
|
profile analysis application, issue the <command>pprof2calltree</command>
|
||
|
comand.
|
||
|
</para>
|
||
|
</step>
|
||
|
</procedure>
|
||
|
</section>
|
||
|
</appendix>
|
||
|
|
||
|
<!-- 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
|
||
|
sgml-parent-document:nil
|
||
|
sgml-default-dtd-file:"../../../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
|
||
|
-->
|
||
|
|