>  > [tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応>
RS-R RSR SUPER DOWN アベニール PNW10 N624SF フロント [ホイール1本(単品)] CRIMSON / CLUB LINEA L747 (PWHP) 19インチ×8.0J PCD:114.3 穴数:5 インセット:8 コワース COERCE アッパーカウル ビキニカウル 97年-08年 ZRX1200R、ZRX1100、ZRX400 白ゲル 0-42-CBFW4410 JP店module.jp Apache & Perl Module Information.

Blog

[tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応>

By Hiroyuki OYAMA Wed Feb 9 01:57:04 2005

Apache 2.0はリクエスト処理の所要時間を秒単位(%T)とマイクロ秒単位(%D)で記録できますが、Apache 1.3の場合は秒単位(%T)でしか記録できません ウェッズ スポーツ ブレーキパッド レブスペック プライム フロント用スバル レガシィB4 BMM 12/5~13/5 2.5i アイサイト TS, 2.5i アイサイト Sパッケージ。ってなわけでApache 1.3でマイクロ秒精度で記録する方法。

[tanabe_GF210]HA36S チェッカーフロアマット/パジェロ アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応> ケーマックス

Apache 2.0系の場合、内部的にマイクロ秒単位で時間を管理しているのでLogFormatディレクティブで%Tで秒単位、%Dでマイクロ秒単位で処理の所要時間を記録できます。その点Apache 1.3の場合は内部的に秒単位で時間を管理しているため秒単位でしか記録できません。ではどうすれば記録できるようになるのか? そこはやはりモジュールをチョロっと書くのです。

Apache1.3でマイクロ秒のログを出力するには

自分でゼロからmod_log_config相当のモジュールを書くことでも対応できますが、さすがにそれは面倒です。というわけで今回はリクエスト処理の所要時間を計測し、その結果をApacheの環境変数にセットしログに記録する方法で対応してみます 。



まずやることは、リクエスト処理サイクルの最初の方のap_run_post_read_requestフェーズで、基準となるマイクロ秒精度の時刻を記録します 225/45R17 DUNLOP ダンロップ WINTER MAXX 02 WM02 ウインターマックス 02 EuroSpeed BL10 ユーロスピード BL10 スタッドレスタイヤホイール4本セット 車種別専用フロアマット CALMAT(キャルマット) トヨタ マークX BMW 1シリーズ(ハッチバック) 24年9~ 右ハンドル車-シャギーレッド。最近のPOSIX準拠な環境ならgettimeofday()が使えるので、これを使ってマイクロ秒単位の時刻が取得できます。取得した時刻はrequest_rec構造体のnotesフィールドにでもセットしておきましょう。だいたいこんな感じのハンドラ関数になります。
 static int begin_msec_count(request_rec *r)
{
 struct timeval *stime;
 int rc;
 if (!ap_is_initial_req(r))
 return DECLINED;
 stime = ap_pcalloc(r->pool, sizeof(struct timeval));
 rc = gettimeofday(stime, NULL);
 if (rc == -1) {
 return DECLINED;
 }
 ap_table_setn(r->notes, "REQUEST_MICRO_SECONDS", (const char *)stime);
 return OK;
}
今度はリクエストの処理が終わったap_log_transactionフェーズで、もう一度gettimeofday()で時刻を取得し、事前に記録しておいた処理開始時点の時刻と比較して所要時間を計算します [ACRE] アクレ ブレーキパッド リアルレーシング フロント用 ムーヴ / ムーヴカスタム L910S 98/10~02/10 660cc ABS付車 NA ※代引不可 ※北海道・沖縄・離島は送料2160円。
 static int end_msec_count(request_rec *r)
{
 struct timeval *stime, etime;
 int rc;
 const char *msec;
 double start, end;
 stime = (struct timeval *)ap_table_get(r->notes, "REQUEST_MICRO_SECONDS");
 if (stime == NULL) {
 return DECLINED;
 }
 rc = gettimeofday(&etime, NULL);
 if (rc == -1) {
 return DECLINED;
 }
 start = stime->tv_sec + stime->tv_usec * 1e-6;
 end = etime.tv_sec + etime.tv_usec * 1e-6;
 msec = ap_psprintf(r->pool, "%.6f", end - start);
 while (r->next)
 r = r->next;
 ap_table_setn(r->subprocess_env, "D", msec);
 return OK;
}
で、最後のap_table_setn(r->subprocess_env, "D", msec)がミソなのですが、計算したマイクロ秒精度の処理所要時間を環境変数"D"にセットします。これによってLogFormatディレクティブで
 LogFormat "%{D}e"
といった記述でマイクロ秒精度の所要時間をログに出力することができるようになります ★色番号塗装発送10 アルファード エアロ 4点キット【ファブレス】MNH10W/15W/ANH10W/15W ALPHARD 前期 SPECIAL SET PRICE SSR EXECUTOR EX02 8.5J-20 とTOYO TRANPATH Lu II(2) 245/35R20の4本セット。

と、こんな感じで標準のmod_log_configモジュールが環境変数などをログに出力できる機能を利用して、任意の情報の出力を実現するモジュールが記述できるわけです。独自にログ出力モジュールを開発するのも手ですが、既存のモジュールにオンブにダッコさせてもらった方が楽ですよね。
完成版のコードは
mod_log_msec.c
に置いておきますので宜しければネタにしてくださいませ。
あ、「リクエスト処理フェーズって何ぞや」ってな方は、 STM スリッパークラッチ for スズキ GSX-R1000(2001-2014)パンダの表紙のかわいい本がありますのでそちらを是非ご覧ください。

[tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応>


Comments

Post a comment

Name:


URL:


Comments:


ApacheをHackする!
モジュールプログラミング強烈初体験!!
定価: 2,919円(税込)
ISBN: 4-7741-1799-4

hiroyuki_oyama IM status

Apache Users

Apache Modules

CPAN

[tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応> アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応> [tanabe_GF210]HA36S


Copyright ©[tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応> All Rights Reserved. 2004 Hiroyuki OYAMA. Japan. All rights reserved.
{yahoojp} {module.jp}
{yahoojp}jpprem01-zenjp40-wl-zd-2507