警報つきポケット線量計
別表記:警報付きポケット線量計、警報付ポケット線量計
英語:Alarm Pocket Dosimeter、APD
被曝線量を測定できるポケット線量計のうち、線量を目で確認できるだけでなく、警報(アラーム)によって知らせる機能が付いたもの。
エー‐ピー‐ディー【APD】
読み方:えーぴーでぃー
APD(Avalanche Photodiode)
アバランシェフォトダイオード(Avalanche Photodiode, APD)
Advanced PHP Debugger (APD)
導入
APD は進化した PHP デバッガです。PHP コードのプロファイリングや デバッグの機能を提供すること、また完全なスタックトレースを出力する 機能を提供することを目的として作成されています。APD は対話形式の デバッグもサポートしていますが、デフォルトではデータをトレース ファイルに書き出すようになっています。また、さまざまなレベルの 情報(関数のコール・渡された引数・時間などを含む)をイベント発生時に 記録することができ、それを個々のスクリプト単位で有効にしたり無効に したりできます。注意 |
APD は Zend 拡張モジュールで、PHP 内部関数のコール方法に手を加えます。
そのため、他の Zend 拡張モジュール(たとえば Zend Optimizer など)との
相性に注意が必要です。
|
インストール手順
現在 APD は PECL 拡張モジュールとして公開されており、 » http://pecl.php.net/package/apd で入手可能です。CGI 版の PHP がインストールされており、パスの通った場所に phpize スクリプトがあることを確かめてください。APD の最新安定バージョンをダウンロード・ビルド・インストールするには 以下のコマンドを実行します。
pear install apd
これは、APD Zend モジュールを自動的に PHP の extension ディレクトリに インストールします。必ずこの場所でなければならないわけではありません。 zend_extension パラメータを適切に設定すれば、PHP が 読み込めるディレクトリならどこにでもインストール可能です。
Windows ユーザは » http://snaps.php.net/win32/PECL_STABLE/ から php_apd.dll をダウンロードできます。
INI ファイルに以下の行を追加します。
zend_extension = /absolute/path/to/apd.so apd.dumpdir = /absolute/path/to/trace/directory apd.statement_tracing = 0
PHP のビルド状況によって、zend_extension ディレクティブは 以下のうちのいずれかひとつとなります。
zend_extension (非 ZTS, 非 debug ビルド) zend_extension_ts ( ZTS, 非 debug ビルド) zend_extension_debug (非 ZTS, debug ビルド) zend_extension_debug_ts ( ZTS, debug ビルド)
Win32 でのビルド
Windows で APD をビルドするには、http://php.net/ で述べられているような PHP コンパイル環境が必要です。 -- 基本的には、Microsoft Visual C++・ win32build.zip・bison/flex・そしてそれらをうまく動かすためのちょっとした コツが必要になります。また adp.dsp の改行コードは必ず DOS 形式に してください。Unix 形式の改行コードだと、Microsoft Visual C++ に文句を言われます。実行時設定
php.ini の設定により動作が変化します。表 19. APD の設定オプション
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
apd.dumpdir | NULL | PHP_INI_ALL | |
apd.statement_tracing | "0" | PHP_INI_ALL |
PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
- apd.dumpdir string
-
APD がプロファイルのダンプファイルを書き出すディレクトリを設定します。
絶対パス・相対パスのどちらも指定可能です。
apd_set_pprof_trace() へ引数を渡すことで、 指定した以外の場所に書き出すことも可能です。 - apd.statement_tracing boolean
-
行単位のトレースをするかしないかを設定します。これを on (1)
にすると、アプリケーションのパフォーマンスに衝撃的な影響を与えます。
リソース型
リソース型は定義されていません。定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。表 20. APD の定数
定数 | 値 | 説明 |
---|---|---|
FUNCTION_TRACE (integer) | 1 | |
ARGS_TRACE (integer) | 2 | |
ASSIGNMENT_TRACE (integer) | 4 | |
STATEMENT_TRACE (integer) | 8 | |
MEMORY_TRACE (integer) | 16 | |
TIMING_TRACE (integer) | 32 | |
SUMMARY_TRACE (integer) | 64 | |
ERROR_TRACE (integer) | 128 | |
PROF_TRACE (integer) | 256 | |
APD_VERSION (string) | 例: 1.0.2-dev |
スクリプト中で PHP-APD を使用する方法
-
トレースを開始するには、PHP スクリプトの最初の行で apd_set_pprof_trace()
関数をコールします。
apd_set_pprof_trace();
この行はスクリプト内のどの場所にでも挿入可能ですが、もしスクリプトの 最初からトレースを始めなければ、あなたをパフォーマンスのボトルネックに 導いてくれるかもしれないデータを捨てることになってしまいます。 -
さあ、スクリプトを実行しましょう。ダンプ結果は
apd.dumpdir/pprof_pid.ext に出力されます。
ティップ
CGI 版の PHP を使用している場合は、apd が正しく動作するように '-e' フラグつきで実行し、拡張情報を有効にしてください。たとえばphp -e -f script.php
のように実行します。
-
プロファイルデータを整形して表示するには、お好みの並べ替えオプション・
表示オプションを指定して pprofp コマンドを実行
してください。整形された出力は以下のようになります。
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
この例で使われている -R オプションは、その関数を実行するのにかかった時間の 順でプロファイルテーブルを並べ替えます。"cumm call" 列には個々の関数が 何回コールされたか、そして "s/call" 列には 1 回のコールあたりの 平均所要時間が表示されます。 -
KCacheGrind にインポートできる形式のファイルを作成するには、
pprof2calltree コマンドを実行してください。
連絡先の情報
コメント・バグフィックス・機能拡張・あるいは開発を手伝いたいなどの場合は、 メールを » [email protected] に送ってください。大歓迎します。目次
- apd_breakpoint — インタプリタの処理を停止し、ソケットからの CR を待つ
- apd_callstack — 現在のコールスタックを配列で返す
- apd_clunk — 警告とコールスタックをスローする
- apd_continue — インタプリタを再開する
- apd_croak — エラーとコールスタックをスローし、終了する
- apd_dump_function_table — 現在の関数テーブルを出力する
- apd_dump_persistent_resources — すべての持続的なリソースを配列で返す
- apd_dump_regular_resources — 現在のすべての一般リソースを配列で返す
- apd_echo — デバッグ用ソケットに表示する
- apd_get_active_symbols — ローカルスコープ内の現在の変数名を配列で取得する
- apd_set_pprof_trace — セッションのデバッグを開始する
- apd_set_session_trace — セッションのデバッグを開始する
- apd_set_session — 現在のデバッグレベルを変更あるいは設定する
- apd_set_socket_session_trace — リモートセッションのデバッグを開始する
- override_function — 組み込みの関数を上書きする
- rename_function — グローバルの関数テーブルで関数名を変更する
APD
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/09/18 03:47 UTC 版)
ナビゲーションに移動 検索に移動APD
- アソシアソン・ポルトゥゲーザ・ジ・デスポルトス (Associação Portuguesa de Desportos)
- アバランシェフォトダイオード (Avalanche photodiode)
- エイベックス・プランニング&デベロップメント - エイベックス・グループの一員 (avex Planning & Development)
- 夜間の就寝時間を利用して行う自動腹膜透析の通称 (Automated Peritoneal Dialysis)
- 米国の重機メーカー - 住重グループの一員
- 警報付ポケット線量計 (Alarm Pocket Dosimeter)
- 高速輸送艦の艦種記号。
- 医療
- 反社会性パーソナリティ障害 (Antisocial personality disorder)
- 回避性パーソナリティ障害 (Anxious Personality Disorder)
- 強迫性パーソナリティ障害 (Anankastic Personality Disorder)
- 聴覚情報処理障害 (Auditory processing disorder)
![]() |
このページは曖昧さ回避のためのページです。一つの語句が複数の意味・職能を有する場合の水先案内のために、異なる用法を一覧にしてあります。お探しの用語に一番近い記事を選んで下さい。このページへリンクしているページを見つけたら、リンクを適切な項目に張り替えて下さい。 |
- APDのページへのリンク