メインコンテンツまでスキップ
バージョン: 開発中

QuotaManager

4D.QuotaManager クラスは、4D アプリケーションに適用する使用制限を設定およびモニターするためのインターフェースを提供します。 しきい値は、例えばほとんど最適化されていないリクエストやサーバーリソースの過度な使用などからサーバーを保護することなどに有用です。 一般的に、クォータマネージャーを使用することでREST サーバーセッションがアクセスできるORDA リソースに対してしきい値を儲けることができます。

4D.QuotaManager オブジェクトは、セッションのquotas プロパティ オブジェクトからインスタンス化することができます。

履歴
リリース内容
21 R4クラスを追加

QuotaManagerオブジェクト

4D.QuotaManager オブジェクトは以下のプロパティを提供します:

currentValues : Object
defaultEntitySetTimeout : Integer
カレントセッションに保存されているREST エンティティセットのデフォルトの非アクティブタイムアウト(秒単位)
maxEntitySetTimeout : Integer
カレントセッションの途中にメモリ内に保存されているREST エンティティセットの非アクティブタイムアウトの最大値(秒単位)
nbEntitySets : Integer

.currentValues

currentValues : Object

説明

.currentValues プロパティには定義されたクォータプロパティに関連したカレントの値が格納されています。 このオブジェクトはサーバーによって自動できに更新されます。

.defaultEntitySetTimeout

defaultEntitySetTimeout : Integer

説明

.defaultEntitySetTimeout プロパティにはカレントセッションに保存されているREST エンティティセットのデフォルトの非アクティブタイムアウト(秒単位) が格納されています。

デフォルトでは、値は2時間(7200 秒)です。 これはまた、$timeout REST API を使用してエンティティセット作成時に定義することもできます。

この値はセッションのquotas.defaultEntitySetTimeout プロパティ を使用することで動的に変更することもできます。これらはセッション内で後で作成されたあらゆるエンティティセットに対して使用することができます(この場合既存のエンティティセットのデフォルトのタイムアウト設定は変更されません)。

maxEntitySetTimeout プロパティ値より大きい値を定義した場合、それはmaxEntitySetTimeout の値に揃えられます。

負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。 セッションのプロパティ値をリセットするためには、undefined を渡してください。

例題

REST を処理する4D コード内のどこかで以下の様に書くことができます:

Session.quotas.defaultEntitySetTimeout:=1200

.maxEntitySetTimeout

maxEntitySetTimeout : Integer

説明

.maxEntitySetTimeout プロパティにはカレントセッションの途中にメモリ内に保存されているREST エンティティセットの非アクティブタイムアウトの最大値(秒単位) が格納されています。

この値はセッションのquotas.maxEntitySetTimeout プロパティ を使用することで設定することもできます。これらはセッション内で後で作成されたあらゆるエンティティセットに対して使用することができます(この場合既存のエンティティセットのタイムアウトの最大値は変更されません)。

一度.maxEntitySetTimeout プロパティが設定されるとその後セッション内で作成されるあらゆるエンティティセットに対しては.maxEntitySetTimeout の値より長いタイムアウト値を設定することはできません。

例えば、最大非アクティブタイムアウト値が40 分(2400 秒) に設定されていたとして、もしその最大値を超えるタイムアウトを必要とするエンティティセットが作成された場合:

http://127.0.0.1/rest/People?$filter=ID>=4&$method=entityset&$timeout=3000

... リクエスト内で定義されたタイムアウトは無視され、この期間は何も使用されなかった場合には40分後にエンティティセットは解放されます。

負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。 セッションのプロパティ値をリセットするためには、undefined を渡してください。

例題

REST を処理する4D コード内のどこかで以下の様に書くことができます:

Session.quotas.maxEntitySetTimeout:=2400

.nbEntitySets

nbEntitySets : Integer

説明

.nbEntitySets プロパティにはカレントセッション中にメモリ内で許可されるREST エンティティセットの最大数 が格納されています。

デフォルトでは、エンティティセットがREST リクエストによってメモリに保存される数 には制約はありません(値は 0 に設定されています)。 特定のセッションに対して、サーバーのペイロードを抑えるために、上限を設定することができます。

許可されているエンティティセットの最大数に達すると、エンティティセットの作成を必要とするREST リクエストは、少なくとも1つのエンティティセットが解放されるまでは429 HTTP ステータスコードとエラーレスポンス を受け取ります。 $release REST コマンド を使用することで、キャッシュからエンティティセットを解放することができます。

負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。 セッションのプロパティ値をリセットするためには、undefined を渡してください。

例題

REST を処理する4D コード内のどこかで以下の様に書くことができます:

	// エンティティセットの最大数は 50 
Session.quotas.nbEntitySets:=50