>  > [tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応>
【USA在庫あり】 クリアキン フットボード カバー ドラッグスター、バルカン 左右ペア 7025 HD店 ウェッズ スポーツ ブレーキパッド レブスペック プライム フロント用スズキ ワゴンR CT21S 93/9~98/9 NA ABS無 No.360001~ 【純正】NISSAN ELGRAND ニッサン エルグランド【PE52 TE52 PNE52 TNE52】  フロアカーペット(スタンダード)【仕様は下記参照】【ブラック】[G4900-1JB6B]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)でしか記録できません YOKOHAMA スタッドレス ice GUARD6 IG60 195/70R15 &JOKER SHAKE 15 x 6.0 114.3/5H + 53 アクセラ BLEFW。ってなわけで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の環境変数にセットしログに記録する方法で対応してみます 。

[tanabe_GF210]HA36S アルトターボRS_2WD(H27/03~)用タナベ_ダウンサス<車検対応>【最低価格!大幅割引!】



まずやることは、リクエスト処理サイクルの最初の方のap_run_post_read_requestフェーズで、基準となるマイクロ秒精度の時刻を記録します ★送料無料★(一部離島等除く) 【JB1-4 ライフ アールエスアール】サスペンション ライフ JB5 660 NA [17/10~] Ti2000 DOWN リアのみ プロジェクトミュー ブレーキパッド type-ps フロント用 ミラ L700S/700V(TURBO-ABS付) 98.10~ 送料無料。最近の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()で時刻を取得し、事前に記録しておいた処理開始時点の時刻と比較して所要時間を計算します WUKAWA ウカワ ホイール本体 アルミニウム鍛造ホイール Type-G カラー:copper CBR600RR 03-04。
 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"
といった記述でマイクロ秒精度の所要時間をログに出力することができるようになります 【メーカー在庫あり】 カワサキ純正 カウリング センター 右 青 55028-0164-235 HD店 CMS シーエムエス サイドカバー SET ILLUS*PB262P*。

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

[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