アプリケーションスコープで変数を宣言する方法はありますか?この変数はメモリ内にとどまり、要求ごとに作成する必要なしにすべての要求を処理します。セッションのようなものですが、特定のユーザーには結び付けられていません。xQueryアプリケーションスコープ変数?
私の探しているものは、PHPのAPCキャッシュと似たものです。
アプリケーションスコープで変数を宣言する方法はありますか?この変数はメモリ内にとどまり、要求ごとに作成する必要なしにすべての要求を処理します。セッションのようなものですが、特定のユーザーには結び付けられていません。xQueryアプリケーションスコープ変数?
私の探しているものは、PHPのAPCキャッシュと似たものです。
セッションフィールドには1つの可能性があります。別の可能性は、サーバ分野である:
http://docs.marklogic.com/xdmp:set-server-field
サーバーフィールドには、ホスト上のアプリケーションサーバーに対するすべての要求に使用可能です。
「marklogic」とタグ付けされているので、私はMarkLogicの非標準回答を提供します。 XQueryは「アプリケーションスコープ」を定義していないため(標準レベルのモジュールのステートメント(一部のコンテキストでは「アプリケーションスコープ」と呼ばれることもあります)の定義を超えているため、標準ベースの回答は「ノー」または「範囲外の質問」です。
MarkLogicには、「セッション」と呼ばれるサポートされている機能があります。 通常「セッション」と呼ばれるものに対応するWebアプリケーション用。
セッションは、xdmp:login()の最初の呼び出し(サポートされている認証を使用してHTTPサーバーで実行することによって明示的または暗黙的に)で作成されます。 セッション 'state'は、セッションフィールドへの最初の書き込み時に作成されます(明示的にxdmp:set-session-field経由、場合によっては(*))。
https://docs.marklogic.com/xdmp:set-session-field
セッションフィールド名のマップ(XS:文字列)です彼らは(上記のリンクで期限切れにメモを参照)限り、セッションが続くとして最後の項目に()* 。複数のHTTPリクエストにまたがるセッションは、クライアント側が適切な取り扱いHTTPクッキーを経由して参加している必要があり
注(MLサーバは、能力がないにもソケットがHTTPクッキー機構を介し以外閉じられた後にリクエストを追跡するためにしようとします。)
最新のブラウザを使用している場合は、Cookieを無効にしないでください。 最新のWebクライアントライブラリを使用している場合、これはおそらくあなたのために行われます。 MarkLogicsで公開されているSDK(java、node、xcc)を使用している場合は、それが実行されます。 ロードバランサ、レベル3のルータ、ゲートウェイ、プロキシなどを経由している場合は、クッキーが変更されずに通過することを保証するために「HTTPセッションアフィニティ」(HTTPセッションアフィニティ)を設定する必要があり、SessionID CookieがHTTPアフィニティにマッピングされている(**)
注:ITデバイスは機能と用語が大きく異なります。 「セッションアフィニティ」と呼ばれることは、クッキーに関連しないことがあります。または は正しいクッキーです。これらはしばしば正しく動作するように設定できますが、 にカスタムコードや設定が必要な場合があります。
(*)セッションステートは、マルチステートメントトランザクションを作成することによって暗黙的に作成されることがあります。 (**) https://docs.marklogic.com/guide/node-dev/extensions
こんにちは@DALDEI、あなたの有益な答えに感謝します。実際には、クッキーを使用してネットワーク管理を使ってマッピングする作業の一部が役に立ちました。しかし、私はehennumの提案のような簡単なものを探しています。 –
こんにちは@ehennum、あなたの提案をありがとう。実際には、これは私が探していたものです。 –