|
użytkowników online: 20
|
OPINIE UŻYTKOWNIKÓW
|
Nie jestem webmasterem, ale i na mnie zrobiła wrażenie szybkość reakcji Darka na mój problem. Jego kompetencja i przede wszystkim zupełnie niemodna w dzisiejszych skomercjalizowanych czasach - zwykła ludzka życzliwość dla innego człowieka. Tacy ludzie to dziś gatunek niemal wymarły...
Leszek
Wojskowy Instytut Medyczny
|
|
PODRĘCZNIK PHP 5.x, 4.x, 3.x - częściowo spolszczony / źródło: www.php.net
[Spis]
[A]
[B]
[C]
[D]
[E]
[F]
[G]
[H]
[I]
[J]
[K]
[L]
[M]
[N]
[O]
[P]
[Q]
[R]
[S]
[T]
[U]
[V]
[X]
[W]
[Z]
II. Advanced PHP debugger
APD is the Advanced PHP Debugger. It was written to provide profiling and
debugging capabilities for PHP code, as well as to provide the ability to
print out a full stack backtrace. APD supports interactive debugging, but
by default it writes data to trace files. It also offers event based
logging so that varying levels of information (including function calls,
arguments passed, timings, etc.) can be turned on or off for individual
scripts.
| Uwaga! |
APD is a Zend Extension, modifying the way the internals of PHP handle
function calls, and thus may or may not be compatible with other Zend
Extensions (for example Zend Optimizer).
|
APD is currently available as a PECL extension from
http://pecl.php.net/package/apd.
Make sure you have installed the CGI version of PHP and it is available
in your current path along with the phpize script.
Run the following command to download, build, and install the latest stable
version of APD:
This automatically installs the APD Zend module into your PHP
extensions directory. It is not mandatory to keep it there; you can
store the module in any directory PHP can read as long as you set
the zend_extension parameter accordingly.
Windows users can download the extension dll php_apd.dll
from http://snaps.php.net/win32/PECL_STABLE/.
In your INI file, add the following lines:
zend_extension = /absolute/path/to/apd.so
apd.dumpdir = /absolute/path/to/trace/directory
apd.statement_trace = 0 |
Depending on your PHP build, the zend_extension directive can be one of the
following:
zend_extension (non ZTS, non debug build)
zend_extension_ts ( ZTS, non debug build)
zend_extension_debug (non ZTS, debug build)
zend_extension_debug_ts ( ZTS, debug build) |
To build APD under Windows you need a working PHP compilation
environment as described on http://php.net/ -- basically, it requires
you to have Microsoft Visual C++, win32build.zip, bison/flex, and some know how
to get it to work. Also ensure that adp.dsp has DOS line endings; if it has unix
line endings, Microsoft Visual C++ will complain about it.
Oto krótkie wyjaśnienie dyrektyw
konfiguracji.
- apd.dumpdir
string
Sets the directory in which APD writes profile dump files.
You can specify an absolute path or a relative path.
You can specify a different directory as an argument
to apd_set_pprof_trace().
- apd.statement_trace
boolean
Specfies whether or not to do per-line tracings. Turning this on (1) will
impact the performance of your application.
To rozszerzenie nie posiada żadnych rodzajów zasobów. To rozszerzenie nie posiada żadnych stałych.
As the first line of your PHP script, call the apd_set_pprof_trace() function
to start the trace:
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.
Now run your script. The dump output will be written to
apd.dumpdir/pprof_pid.ext.
Podpowiedź:
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:
php -e -f script.php
To display formatted profile data, issue the pprofp
command with the sort and display options of your choice. The formatted
output will look something like:
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 |
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.
To generate a calltree file that you can import into the KCacheGrind
profile analysis application, issue the pprof2calltree
comand.
If you have comments, bugfixes, enhancements or want to help developing
this beast, you can send an mail to
apd@mail.communityconnect.com. Any help is very
welcome.
User Contributed Notesbugbuster at darrencampbell dot com dot au
22-May-2005 10:53
Locate the root-cause of defects, fast.
If you need to locate the source of a defect in complicated web-based PHP applications with lots of conditional includes (osCommerce and Zen-Cart are reasonably complex), use APD to create a profile dump.
Then filter the dump for lines containing "!" to produce a list of included (required) files in the order they were included.
On my Win98 dev box I use: find "!" dumpfile > trace_program.txt
I use the trace_program.txt to backtrack to the root-cause of defects appearing in the browser. Great for maintaining systems you did not build yourself.
ng4rrjanbiah at rediffmail dot com
05-Apr-2005 07:52
yoghurtmetperzik at gmail dot com
25-Jan-2005 04:15
If pprofp reports 'No such file or directory', it's probably because it contains an incorrect path to your php client. Open pprofp in your fav editor, edit the first line, and try again.
|