4D v14.3On Server Open Connectionデータベースメソッド |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
On Server Open Connectionデータベースメソッド
On Server Open Connectionデータベースメソッド
On Server Open Connectionデータベースメソッドは、4Dリモートワークステーションが接続プロセスを開始するたびに、サーバーマシン上で一度、呼び出されます。4D Server 以外の4D 環境ではOn Server Open Connectionデータベースメソッドが起動されることはありません。 On Server Open Connectionデータベースメソッドは以下のときに呼び出されます:
(*) 4D v13より最適化のため、サーバープロセス (データベースエンジンにアクセスするためのプリエンプティブプロセスとランゲージアクセスのためのコオペラティブプロセス) はクライアント側のコードを実行する際必要な時にだけ作成されるようになりました。以下は新規クライアントプロセスを実行する4Dコードの詳細です: // グローバルプロセスが開始されるがこの時点では 重要: Web接続およびSQL接続はOn Server Open Connectionデータベースメソッドを起動しません。Webブラウザーが4D Server に接続する場合は On Web Authenticationデータベースメソッド (あれば) とOn Web Connectionデータベースメソッドが起動されます。4D ServerがSQLクエリを受信すると、On SQL Authenticationデータベースメソッドが (あれば) 呼び出されます。詳細については、4D Language Referenceマニュアルのデータベースメソッドに関する説明を参照してください。 重要: ストアドプロシージャの開始時には、On Server Open Connectionデータベースメソッドは起動されません。 ストアドプロシージャ はサーバプロセスであり、4Dクライアントプロセスではありません。ストアドプロシージャはサーバマシン上でコードを実行しますが、 4Dクライアント (または他のクライアント) と4D Server によってやり取りされる要求に対して応答を返すことはありません。 On Server Open Connectionデータベースメソッド は4D Serverマシン上で、このメソッドを呼び出しを引き起こした4Dクライアントプロセス内で実行されます。 例えばリモート4Dが4D Server インタープリタデータベースに接続すると、そのクライアント用のユーザプロセスとデザインプロセス、クライアント登録プロセスが (デフォルトで) 開始されます。したがって On Server Open Connectionデータベースメソッド は3回実行されます。つまり1回目はアプリケーションプロセス内で、2回目はクライアント登録プロセス内で、3回目はデザインプロセス内で実行されます。3つのプロセスがそれぞれサーバマシン上で開始される6番目と7番目と8番目のプロセスである場合に、On Server Open Connectionデータベースメソッド内から Current process を呼び出すと、 Current process は1回目には6を、2回目には7を、3回目に8を返します。 On Server Open Connectionデータベースメソッド はサーバマシン上で実行されることに注意してください。このデータベースメソッドは、クライアント 側で実行中のプロセスとは無関係に、サーバマシン上で実行中の4Dクライアントプロセス内で実行されます。また、このメソッドが起動された時点では、4D クライアントプロセスにはまだ名前が付いていません (この時点では、PROCESS PROPERTIESは4Dクライアントプロセスの名前を返しません)。 On Server Open Connectionデータベースメソッド は、クライアント側で実行中のプロセスのプロセス変数テーブルにアクセスしません。このテーブルはサーバマシンではなく、クライアントマシンに存在します。 On Server Open Connectionデータベースメソッド がプロセス変数にアクセスすると、4Dクライアントプロセス用に動的にプロセス変数テーブルが作成され、プライベートに使用されます。 4D Serverは On Server Open Connectionデータベースメソッド に3つの倍長整数タイプの引数を渡し、倍長整数タイプの結果を求めます。したがってこのメソッドでは3つの引数と戻り値を倍長整数として明示的に宣言しなくてはなりません: C_LONGINT($0;$1;$2;$3) $0に値を返さず、その結果変数を未定義のままにするかまたはゼロに初期化した場合、4D Server はデータベースメソッドが接続を受け付けたものとみなします。接続を受け付けない場合、$0にヌルではない値を返します。 次の表はこのデータベースメソッドに渡される3つの引数が示す情報を表わしています:
これらのID番号は、例えば4Dコマンドに渡す引数のように、情報ソースとして直接使用することはできません。しかしこれらのID番号はOn Server Open ConnectionデータベースメソッドとOn Server Close Connectionデータベースメソッドとの間で、4Dクライアントプロセスを一意に識別するために利用できます。4D Server セッションのどの時点でも、これらの値の組み合わせはユニークです。インタープロセス配列やテーブルにこの情報を格納することによって、2つのデータベー スメソッド間で情報をやり取りできます。この節の最後に示された例では、2つのデータベースメソッドがこの情報を使用して、テーブルの同一レコードに接続 の開始と終了の日付と時間を格納しています。 次の例はOn Server Open ConnectionデータベースメソッドとOn Server Close Connection データベースメソッドを使用して、データベースへの接続ログを管理する方法を示しています。[Server Log]テーブル (下図) は接続処理の記録を取るために使用されています: このテーブルに格納される情報は、次のOn Server Open ConnectionデータベースメソッドとOn Server Close Connection データベースメソッドによって管理されます: ` On Server Open Connection データベースメソッド $0:=0 ` On Server Close Connection データベースメソッド 下図は[Server Log]に登録されたレコードで、いくつかのリモート接続を示しています: 以下の例題は午前2時から4時の間の接続を拒否します。
` On Server Open Connection データベースメソッド |
プロパティ
プロダクト: 4D
履歴
変更: 4D v13 ARTICLE USAGE
ランゲージリファレンス ( 4D v14 R3) Inherited from : On Server Open Connectionデータベースメソッド ( 4D v12.4) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||