以下のソースで,処理CPU負荷を下げるのはどうしたらいいでしょうか?

sleep()をはずすとクライアント側がCPU負荷が少なくなり、
サーバ側がCPU負荷が高くなります。
はずさないと逆です。
理想は、<body onload="setInterval('aa()',100);">で指定している
時間で実行したいです。sleep()をいれてしまうと5秒後にリロードされてます。
ソースファイルは;
http://maruta-gr.co.jp/test/cpu/bb.html.txt
になります。
ちなみに、startEvent('test','test1','test1','2')の部分は
どんどん追加書きをしていきます。
startEvent('test','test3','test3','2')
startEvent('test','test4','test4','2')
など、特に上限はありません。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/05/21 12:49:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:jack_sonic No.1

回答回数124ベストアンサー獲得回数25

ポイント35pt

①まず、

1秒毎の呼び出しの場合は、

setInterval()で指定する時間は100ではなく1000です。

これは修正したほうがよいです。

ミリ秒=1/1000秒で、

100ミリ秒=0.1秒

1000ミリ秒=1秒

のため。

0.1秒ごとにsleep(100)を呼び出すとクライアントのCPU負荷は

当然高まり、10倍以上の負荷になります。

②また、質問文のソースのsleep関数は、

負荷をかけるループを使った方式になっているので、クライアントの負荷を下げるためには、値を非常に小さくするか、

外したほうがいいです。

サーバ側では特に何か処理をしていますか?

また、marqueeのための処理ということですが、

実際に使うときの記述方法と位置など、

もう少し詳しく情報をください。

id:hopefully

サーバー側は、今回サンプルにあげてある

var test2_val = "33";

などの33部分がHTML_AJAXで値を取りにいくように

なっています。

HTML_AJAX部分のソースも書いての

アップをしました。

http://maruta-gr.co.jp/test/cpu/bb2.html.txt

これでもまだaaという文字列は固まりますね。

2007/05/18 16:10:30
id:jack_sonic No.2

回答回数124ベストアンサー獲得回数25

ポイント35pt

Ajax入りのソースを見たのですが、

ディスパッチャの生成時にcallback関数が設定されておらず、

mode=syncになっていますが、

非同期通信ではなく同期通信をするのでしょうか?

サーバからの値の取得・設定をしてdivを書き換えるだけの場合、

callback関数を設定して非同期通信を行うほうがよいような

気がするのですが、、

サーバからの値の取得・設定が終わったタイミングで

ajaxにdivの書き換えを行うcallback関数を呼んでもらう

といったような

id:hopefully

非同期通信で行いたいです。

これはどうしたらいいのでしょうか?

サーバー側のPHPファイルでの設定が必要ですか?

もしくは

test1: function() { return this.dispatcher.doCall('test1',arguments); },を

test1: function(callback) { return this.dispatcher.doCall('test1',arguments); },

とかにしたら非同期になるんでしょうか?

2007/05/18 16:57:04
  • id:jack_sonic
    目的としてはどういう処理をしたいのでしょうか?
    「~秒ごとに~をしたい」など
  • id:hopefully
    すいません。
    一秒毎にsetIntervalを実行して、
    HTMLの中に
    <marquee>
    aa
    </marquee>
    と記述したらそのaaがブラウザ上、onload時に
    止まってしまうので
    そのaaがずっと流れて居る状態にしたいです。
    そうするにはどうしたらいいでしょうか?
    もし可能であるなら教えて下さい。

  • id:jack_sonic
    Ajaxでデータを渡すPHP側の処理では
    どれくらい時間のかかる処理をしていますか?

    また、HTML_Ajaxの初期化に時間がかかっているのか、
    それとも別の原因かを知るために、

    タイマーなどを使わず、
    this.dispatcher = new HTML_AJAX_Dispatcher(this.className,mode,callback,'/test/Server.php?','JSON');

    等の、HTML_AJAX_Dispatcherの初期化だけの
    コードで
    どれくらいの時間を消費するかも
    確認してみる必要がありそうです。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません