* HTML convert timeに、Menubar等の処理時間が含まれない [#cdef7dbe]

- ページ: [[BugTrack2]]
- 投稿者: [[ぃぉぃぉ]]
- 優先順位: 低
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2007-06-24 (日) 12:00:08
- バージョン: 1.4.7

** メッセージ [#s4ea5ce8]
skinを呼ぶ前にHTML convert time(一番下に表示されるやつ)で表示する時間を作成しているため、skinでの処理時間がHTML convert timeの表示値に含まれていない。少なくともMenubarの処理時間は含めたい。

次の3つのファイルを修正して対応できる。サーバーでの処理時間ほぼすべてが含まれるようになるはず。
-skin/pukiwiki.skin.php
-lib/func.php
-lib/html.php

***skin/pukiwiki.skin.php [#l3b9d553]
-表示するときに計算する。
 - Powered by PHP <?php echo PHP_VERSION ?>. HTML convert time: <?php echo $taketime ?> sec.
 + Powered by PHP <?php echo PHP_VERSION ?>. HTML convert time: <?php showtaketime() ?> sec.

***lib/func.php [#yf3bde59]
-表示する関数showtaketime()。どっかお尻の方にでも追加。
 + function showtaketime()
 + {
 +	 $longtaketime = getmicrotime() - MUTIME;
 +	 $taketime     = sprintf('%01.03f', $longtaketime);
 +	 echo $taketime;
 + }
--MUTIMEはinit.phpで作成(define)される。

***lib/html.php [#b1f5cd37]
-要らなくなった計算部分削除。(skinを呼び出す直前で計算していた。)
 -	$longtaketime = getmicrotime() - MUTIME;
 -	$taketime     = sprintf('%01.03f', $longtaketime);
 
 	require(SKIN_FILE);

--------
- コメントありがとうございます。HTML convert timeは皆「出力するために色々かかった時間」であるとイメージしているはずなので、実はそうでなく、MenuBarやskinであれこれやった時間が含まれてないというのは結構意外です。そしてこれをどうにかしようとした場合、関数でしかフォローできないと思います。まとめると、すごく自然な発想で、今までより現実的なアイデアだと思います -- [[henoheno]] &new{2007-06-24 (日) 18:43:23};
- 互換性を考えると、 $taketime はまだ残さねばならないかもしれません。これは lib/html.php のコードを入れ替えるだけで済むと思います。 -- [[henoheno]] &new{2007-06-24 (日) 18:44:43};
 -	$longtaketime = getmicrotime() - MUTIME;
 -	$taketime     = sprintf('%01.03f', $longtaketime);
 +	// Obsolete but compatible
 +	$taketime = showtaketime();
 
 	require(SKIN_FILE);
- 後は関数名を一般化できないかどうか位かな・・・。$longtaketime は他では参照していない様ですね。echoだと $taketime に代入したり、複数回呼んだりできないので return にして・・・単純にするとこんな感じでしょうか -- [[henoheno]] &new{2007-06-24 (日) 18:47:24};
 + function showtaketime()
 + {
 +	 return sprintf('%01.03f', getmicrotime() - MUTIME);
 + }
- 後は・・・getmicrotime() はこの部分でしか使っていない関数なので、今回の関数を挿入する位置は getmicrotime() が定義されている場所の隣にするのが良さそうです。仮に将来 getmicrotime() ごと無くしたり、単純化できるなら、コードの複雑度が下がってより幸せですね :)  -- [[henoheno]] &new{2007-06-24 (日) 19:00:43};
-- getmicrotime() ねたですが、[[PHPfunc:microtime]] のコメント欄に、strtok() を使うのが最もコストが軽いという実験結果と検証コードが載っていますね。 --  &new{2007-06-24 (日) 19:14:19};
- 関数になることで、例えばspam.php のブロック通知メールにも処理時間を(コードの重複なしで、簡単に)載せられるようになりそうですね。 -- [[henoheno]] &new{2007-06-24 (日) 19:10:18};
- さて、このまま定数 MUTIME (外部にある値)に依存した関数にすべきかどうか、それとも (getmicrotime() を引数に取って) 「時刻の差分とsprintf() する関数」に一般化すべきかどうか・・・。悩ましいですね。むむ。 -- [[henoheno]] &new{2007-06-24 (日) 22:21:38};
- コミットしました。関数の構造はシンプルなままとし、コメントで説明を補いました。関数名は elapsedtime() とさせていただきました。いかがなものでしょうか。 -- [[henoheno]] &new{2007-06-24 (日) 23:02:13};
-- [[cvs:lib/func.php]] (1.91)
-- [[cvs:lib/html.php]] (1.63)
-- [[cvs:skin/pukiwiki.skin.php]] (1.53)
-- [[cvs:skin/tdiary.skin.php]] (1.35)
- 作業お疲れ様です。なるほど。ここの互換性は重要かもしれませんね。バージョンあげたときに、スキンをそのまま使いたい人は多いでしょうから。&br;関数化での汎用性で悩まれていますが、この辺りの値を使う人は、この関数を呼ばずに直でUTIMEやgetmicrotimeを使うので、あまり気にしなくても良いかと。自分がskinを修正した際も直で式を書きたかったんですが、うまくいかなかったので仕方なく関数にしました。 -- [[ぃぉぃぉ]] &new{2007-06-25 (月) 00:02:17};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.047 sec.

SourceForge