PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
11118 | 00/04/21 17:52:04 | RE(1):PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します By Tk |
8633 | 99/10/07 22:18:41 | PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します By kouyamat |
カテゴリ:インターネットアプリケーションの構築
日付:2000年04月21日 17:52 発信者:Tk
題名:RE(1):PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します
半年も前の発言に対していまさらという感もありますが、
私も以前から頭を悩ましていた問題でして、最近ようやく
解決策を見つけたので、書いておこうと思います。
>現在Web.PBでCGIアプリを開発しているのですが、データベースに接続して処理を行うCGIを複数クライアン
トから
>発行すると、CGIアプリが異常終了(ワトソン博士が登場)してしまいます。
>どうもアドレス違反が起きているようなので、以下のような対策をしてみましたが効果がありません。
>1.グローバル変数の使用をやめて、すべてローカル、インスタンス変数で処理する。
>2.共通関数の使用をやめる。
>(DBParm=\"ThreadSafe=\'YES\'を設定したところ、症状が悪化してしまいました。)
(中略)
>ちなみに、
>DBMSはOracle8.0.5、
>DBMS=\"O84 ORACLE 8.0.4\"(pbo8460J.dll)でネイティブ接続しています。
>
この現象は「同時に複数のCONNECTを実行しようとした」場合に発生します。
Web.PBアプリでは、NVOのConstructorでCONNECT、Destructorで
DISCONNECTするのが一般的なスタイルかと思いますが、複数の
クライアントから同時に接続した場合、あるいはフレームを
使用したページの場合、NVOの複数のインスタンスがほぼ同時に
生成され、同時にCONNECTを実行することになりますが、これが
良くないようです。
排他制御を行って、あるインスタンスがCONNECT待ちの間は
他のインスタンスはCONNECTしないようにすることで、
エラーは発生しなくなりました。
SQL*Net、あるいはPBのOracleネイティブインタフェース側に、
「同時に複数のCONNECTはできない」などという制約があるのでしょうか?
ちなみにこの現象は、どのような場合でも発生するわけではなく、
CPU性能に大きく依存するようです。
私が試した限り、極端に速い、あるいは遅いCPUで頻発し、
200?400MHzクラスのCPUでは比較的安定します。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser InternetExplorer4.X
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.