HTTP 要求によって作成されたセッションはすぐにインスタンス化されるので、このセッションコンテキストを必要とする後続の HTTP 要求は作成されたセッションによってキューに追加されます。
この例では、sa_set_http_option プロシージャを使用してセッションがサーバで作成されると、ローカルホストクライアントは、データベース dbname で実行され、サービス session_service を実行する、指定されたセッション ID (session_63315422814117) のセッションに、次の URL を指定してアクセスできます。
http://localhost/dbname/session_service?sessionid=session_63315422814117 |
Web アプリケーションでは、HTTP Web サーバ内のアクティブなセッションの使用率を追跡する手段が必要になることがあります。セッションデータを取得するには、NEXT_CONNECTION 関数をアクティブなデータベース接続に対して繰り返し呼び出し、SessionID などのセッション関連のプロパティを確認します。
次の SQL 文は、アクティブなセッションの追跡方法を示します。
CREATE VARIABLE conn_id LONG VARCHAR; CREATE VARIABLE the_sessionID LONG VARCHAR; SELECT NEXT_CONNECTION( NULL, NULL ) INTO conn_id; conn_loop: LOOP IF conn_id IS NULL THEN LEAVE conn_loop; END IF; SELECT CONNECTION_PROPERTY( 'SessionID', conn_id ) INTO the_sessionID; IF the_sessionID != '' THEN PRINT 'conn_id = %1!, SessionID = %2!', conn_id, the_sessionID; ELSE PRINT 'conn_id = %1!', conn_id; END IF; SELECT NEXT_CONNECTION( conn_id, NULL ) INTO conn_id; END LOOP conn_loop; PRINT '\n'; |
データベースサーバメッセージウィンドウには、次の出力のようなデータが表示されます。
conn_id = 30 conn_id = 29, SessionID = session_63315442223323 conn_id = 28, SessionID = session_63315442220088 conn_id = 25, SessionID = session_63315441867629 |
セッションに属する接続を明示的に切断すると、接続が閉じられ、セッションが削除されます。切断される接続が HTTP 要求の処理において現在アクティブになっている場合、その要求は削除対象としてマーク付けされ、要求を終了するキャンセル通知が送信されます。要求が終了すると、セッションは削除され、接続は閉じられます。セッションを削除すると、そのセッションのキューで保留中だったすべての要求が、キューに再度追加されます。
接続が現在アクティブでない場合は、セッションは削除対象としてマーク付けされ、セッションタイムアウトキューの先頭に再度追加されます。セッションと接続は次回のタイムアウトサイクルで削除されます (通常は 5 秒以内)。削除対象としてマーク付けされたセッションはいずれも、新しい HTTP 要求では使用できません。
データベースが停止すると、すべてのセッションが失われます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |