- PR -

JavaScriptとCGIアプリ

1
投稿者投稿内容
ビギ
ベテラン
会議室デビュー日: 2006/04/03
投稿数: 56
投稿日時: 2007-02-08 09:46
こちらへの質問でよろしいでしょうか?

CGIアプリで、ブラウザにoracleより抽出したデータを一覧で表示(table)、
ブラウザで、行ごとにcheckboxをつけボタンを押すと、JavaScriptチェックされた行のcellデータを1行ずつ取得して、cgiアプリに渡す、
cgiアプリのほうでは 渡されたデータをoracleデータベースに書き込む処理を作成、
・・・のような処理を作成してします。
debug時、checkboxにチェックが入ったものをalert表示させ、データベースに
正しく書き込まれるか確認したところ、DBに正しく書き込まれていました。

が、alertをはずすとデータが2件くらいしか書き込まれません。
CGIアプリのログにも何もかかれていないので、動いていないように見えます。
IE(IISサーバ?)が追いつかないような感じでしょうか・・・。

CGIアプリの処理ですが、今はtableのデータを1行ずつ受け取り、
DBのopen/insert/commit/closeをやっていますが、これをやめて一旦テキクストファ
イルに書いて最後にDBに書き込む・・・とも思ったのですが、CGIが動いていないのでは結果は同じですよね。

他の方法として考えてみたのは、
@JavaScriptのほうで、1行ずつCGIに渡したらSleepもどきのような処理を入れる
   →パフォーマンスが落ちる?
AJavaScriptで一旦、テキストファイルを作成し、書き終わったらCGIにファイル名を渡す
   →セキュリティを低くしないとダメ?

一度に処理したいのは、今のところmax2000件程度ではあるのですが、
こういう場合、どんな方法で対処していいのか途方にくれています。
アドバイスをしていただけないでしょうか。

os:     windowsServer2003
WebServer: IIS
oracle:   9i
cgiアプリ: vc++で作成。

よろしくお願いいたします。
shimix
ぬし
会議室デビュー日: 2004/08/05
投稿数: 512
お住まい・勤務地: 大分市
投稿日時: 2007-02-08 10:27
引用:

ビギさんの書き込み (2007-02-08 09:46) より:
こちらへの質問でよろしいでしょうか?

CGIアプリで、ブラウザにoracleより抽出したデータを一覧で表示(table)、
ブラウザで、行ごとにcheckboxをつけボタンを押すと、JavaScriptチェックされた行のcellデータを1行ずつ取得して、cgiアプリに渡す、


CGIに渡す処理は実際にはどういう記述になっていますか?まさか1行ずつPOSTしているなんてことはないと思いますが・・。1行ずつPOSTであれば結果表示画面(target)を指定していると思いますが、そうなっていますか?

#まとめてPOST/まとめてDB処理が基本だと思います。

引用:

一度に処理したいのは、今のところmax2000件程度ではあるのですが、


2000件を一度に画面表示/チェックしてPOSTの可能性があるのでしょうか?
ビギ
ベテラン
会議室デビュー日: 2006/04/03
投稿数: 56
投稿日時: 2007-02-08 23:01
tableの1行内に表示しているcellのデータ(テキストだったり、radioボタンで選択)を一緒に渡さないといけないので、どうやっていいのかわからず、苦肉の策で1行ずつPOSTしています。。
結果表示画面は空いてるところにDUMMYで書いておいて(iframe)、空白の頁を書いてます。(これも苦肉の策!)
これは、別ウインドウを開くようにすれば進捗状況表示もどきに変更できるかな・・・と思いながら。

#まとめてPOST/まとめてDB処理が基本だと思います。

ですよね。
どうやったら、全データをまとめて引き取れるでしょうか?

表示は2000件ですが、実際に書き込むのは そこから抽出していって
一般的な運用では50〜200件程度の書き込みになると思います。
200件も一斉にやるわけがないとも思うのですが、
今後増える可能性はあるといわれてます。

表示しているデータを全て書き込むのなら、まだいいのですが
checkboxでチェックをはずしたデータ行は書き込まないのです。
更にradioボタンでデフォルト設定を変更することも必要だというし。


引き続きよろしくお願いします。

ビギ
ベテラン
会議室デビュー日: 2006/04/03
投稿数: 56
投稿日時: 2007-02-18 16:38
取り急ぎ、Sleepもどき関数を作成して
1件ごとにSleepするようにしてうまくいきました。
間隔は180件で100msくらいいれないとNGでした。

今はこれでしのげると思いますが
やはり1回のPOSTで処理できるようにしないと厳しいと思っています。

ビギ
ベテラン
会議室デビュー日: 2006/04/03
投稿数: 56
投稿日時: 2007-02-28 12:06
暫定でSleepもどきを入れて、仮リリースしましたが
やはり登録されるデータは抜けがあるとの事でした。

で、全データを引き取れるようPOSTに変更したところ、
処理時間はかかりますが
全データの登録ができるようになりました。

実際にはiFRAMEですが、サイト検索で以下のような内容を発見し、
参考にしました。

--B.htm--
<SCRIPT TYPE="text/javascript">
function aaa(){
parent.sub.form1.submit();
}
</SCRIPT>
<form name="form1" method="post" action="B.asp">
<input type="text" value="" name="text1">
<input type=button value="Searh" name="button1" OnClick="aaa()">
</form>

新たに他の問題も出てきましたが、とりあえず完了とさせていただきます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)