CGIを使って時間を計るには?

[上に] [前に] [次に]
TOI [E-Mail] 1998/09/13(日) 23:17:45
CGIを使って、時間を計るにはどうしたらよいのでしょうか?
要するにストップウォッチみたいなのを作りたいのですが・・・
特にボタンを押すと測定開始となるものがいいですけど・・・
まだCGI初心者なものでよろしくお願いします。

Tiot [E-Mail] 1998/09/14(月) 01:02:41
ただ単に時計のようなものを作りたいのでしたら
JavaScriptを使った方が、簡単で効率よく作れると思います。

function now(){
 timeID=setTimeout("now()", 1000);
 document.form[0].element[0].value=new Date();
}

(本文中で)
<form method="post">
<input size=n>
</form>

<script>
now();
</script>

これは今手元にあった、現在時刻を表示するスクリプトですが
これに、開始ボタンと、停止ボタンをつけてgetTimeメソッドを
使えばストップウォッチのようなものもできると思います。

cgiを使って同じことを、きれいにやるとするとサーバプッシュを
使わなければならないと思います。とほほさんの
http://www.tohoho-web.com/wwwxx004.htm
を参照に。
クライアントプルでもできますが、
画面全体の再描画になるのであまり美しくないと思います。
特殊な目的でない限りJavaScriptを使うのがいろいろな意味で
いいのではないでしょうか。

みんこ [HomePage] 1998/09/14(月) 17:44:13
JavaScriptで作ってみました。0から1秒ずつカウントします。


(headタグ内)

<SCRIPT LANGUAGE="JavaScript">
<!--------
var i=0; (この数字が最初に表示されます)
function count(){
if (i>=0){
timess = setTimeout("count()",1000);
document.forms[0].elements[0].value=i;
i++; 
}
}
//-------->
</SCRIPT>

(bodyタグ内)
<FORM METHOD="POST" name=f1>
<input size="5" name="count"></FORM>

<br>
<FORM METHOD="POST" name=f2>(スタートボタン)
<input type="button" value="start" onClick=count()></FORM>
<FORM METHOD="POST" name=f3>(ストップボタン)
<input type="button" value="stop" onClick=clearTimeout(timess)></FORM>

一応動くと思いますが、かなり自己流なので
もうちょっときちんと作れる方、がんがん直してやって下さい。

Tiot [E-Mail] 1998/09/14(月) 19:38:32
スクリプトの部分をこんなかんじにしたらどうでしょうか。
var i=0;
function count(){
if (i==0){
startday = new Date();
startsec = startday.getTime();
i++;
}
timess = setTimeout("count()",1);
day = new Date();
sec = day.getTime();
document.forms[0].elements[0].value=(sec-startsec)/1000;
}
1度のループで1加算するという方法ですと、処理にかかる時間が
そのまま誤差になってしまいます。
(関数を呼び出すまでが1秒で、この中には実際処理にかかる時間は
含まれていませんので)

TOI [E-Mail] 1998/09/15(火) 00:35:52
いろいろとご指摘ありがとうございます。
どうも自分のやりたいことがうまく伝わらなかったみたいです。
JavaScriptを使ってもいいので、CGIで時間の記録を取りたいのです。
何秒かかったかっていうやつです。
どうかもう一度よろしくお願いします。

B-Cus 1998/09/15(火) 00:53:50
> 何秒かかったかっていうやつです。

何を持って計測開始して、何を持って計測終了としたいのですが?
それがわからないと何とも言えないと思います。

Aurai [E-Mail] 1998/09/15(火) 01:28:32
単純にtimeの比較とかじゃだめですか
CGI内部のプロセスの消費時間ならtimesというのが使えそうですが

[上に] [前に] [次に]