HTML convert timeに、Menubar等の処理時間が含まれない

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

メッセージ

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

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

  • skin/pukiwiki.skin.php
  • lib/func.php
  • lib/html.php

skin/pukiwiki.skin.php

  • 表示するときに計算する。
    - 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

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

lib/html.php

  • 要らなくなった計算部分削除。(skinを呼び出す直前で計算していた。)
    -	$longtaketime = getmicrotime() - MUTIME;
    -	$taketime     = sprintf('%01.03f', $longtaketime);
    
    	require(SKIN_FILE);

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-03-08 (月) 13:26:18
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.280 sec.

OSDN