Xdebug http://www.xdebug.org/index.php
他のデバック/プロファイリングソフトは以下がある模様。
名前 | 価格 | 説明 |
Zend Studio | 41,000円 | PHP開発元 |
apd | 無償 | Windowsではコンパイルが必要 |
PHP Dyn | 無償 | Windowsではコンパイルが必要 |
C:\php\ext\php_xdebug-2.1.2-5.3-vc9.dll
[XDebug] zend_extension=c:\\php\\ext\\php_xdebug-2.1.2-5.3-vc9.dll xdebug.profiler_enable=1 xdebug.profiler_output_dir="D:\\temp" xdebug.profiler_output_name = xdebug.%s
c:\> php -m | find "Xdebug" Xdebug
yum install php-devel php-pear pecl install xdebug cat >> /etc/php.d/xdebug.ini << 'EOS' zend_extension=/usr/lib/php/modules/xdebug.so xdebug.profiler_enable=0 EOS service httpd graceful
perl -p -i -e 's#xdebug.profiler_enable=0#xdebug.profiler_enable=1#' "/etc/php.d/xdebug.ini" service httpd graceful
perl -p -i -e 's#xdebug.profiler_enable=1#xdebug.profiler_enable=0#' "/etc/php.d/xdebug.ini" service httpd graceful
cat >> .htaccess << 'EOS' php_flag xdebug.profiler_enable 1 EOS
/tmp/cachegrind.out.28996
apacheの再起動。
phpinfo();で確認する。
<? phpinfo(); ?>
「xdebug」の項目が表示されていればOK。
trigger_error();でスタックトレースが表示されれば成功。
php.iniに以下の行を追加する。
apacheを再起動。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; for Xdebug ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;xdebug.dump.COOKIE ;xdebug.dump.ENV ;xdebug.dump.FILES xdebug.dump.GET=* xdebug.dump.POST=* ;xdebug.dump.REQUEST ;xdebug.dump.SERVER xdebug.dump.SESSION=*
php.iniに以下の行を追加する。
c:/php/xdebug/ディレクトリを作成。
apacheを再起動。
echo "xdebug.profiler_enable = 1" >> /etc/php.d/xdebug.ini service httpd graceful
で、phpプログラムを実行すると、「C:\PHP\xdebug\xdebug_1106716852_3456.txt」のようなファイルができます。
実行された関数名とそれにかかった時間等の情報が出力されます。
Execution Time Profile (sorted by execution time) ----------------------------------------------------------------------------------- Time Taken Number of Calls Function Name Location ----------------------------------------------------------------------------------- 0.0033779144 1 *{main}() c:\user\www\htdocs\php\phpinfo.php:0 0.0032899380 1 phpinfo() c:\user\www\htdocs\php\phpinfo.php:2 ----------------------------------------------------------------------------------- Opcode Compiling: 0.0023498535 Function Execution: 0.0032899380 Ambient Code Execution: 0.0876271725 Total Execution: 0.0909171104 ----------------------------------------------------------------------------------- Total Processing: 0.0932669640 ----------------------------------------------------------------------------------- End of function profiler
特定の部分のプロファイリングをするには、xdebug_start_profiling()、xdebug_stop_profiling()を使用する。
xdebug_start_profiling(); // 処理... xdebug_dump_function_profile(); // 2つのテーブルで表示。 echo "<pre>"; var_export(xdebug_get_function_profile()); // プロファイル情報を配列で返す xdebug_stop_profiling();