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

プリエンプティブWebプロセスの使用

4D Webサーバーを使って、コンパイル済みアプリケーションでプリエンプティブWebプロセスを使用することによって、マルチコアコンピューターの利点を最大限引き出すことができます。 4D変換タグや Webデータベースメソッドを含めた Web関連コードを、可能な限り多くのコアで同時に実行するよう設定することが可能です。

4D のプリエンプティブプロセスについての詳細は、ランゲージリファレンスプリエンプティブ4Dプロセス の章を参照ください。

Webプロセスにおけるプリエンプティブモードの使用可能状況

実行コンテキストによって、プリエンプティブモードが使用される、または使用可能かを次の表に示します:

4D Serverインタープリター (ローカルクライアント接続)インタープリター (プロジェクト (ローカルクライアント接続なし) またはバイナリ)コンパイル済みコード
REST サーバーコオペラティブプリエンプティブプリエンプティブ
Web サーバーコオペラティブコオペラティブWeb設定
WebサービスサーバーコオペラティブコオペラティブWeb設定
旧式RESTコオペラティブWeb設定Web設定
4Dリモート/シングルユーザーインタープリターコードコンパイル済みコード
REST サーバーコオペラティブプリエンプティブ
Web サーバーコオペラティブWeb設定
WebサービスサーバーコオペラティブWeb設定
旧式RESTコオペラティブWeb設定

スレッドセーフなWebサーバーコードの書き方

Webプロセスをプリエンプティモードで実行するには、Webサーバーで実行されるすべての 4Dコードがスレッドセーフでなければなりません。 ストラクチャー設定ダイアログボックスにおいて プリエンプティブプロセスを使用 オプションがチェックされている場合、アプリケーションの以下の部分が 4Dコンパイラーによって自動的に評価されます:

  • すべての Web関連データベースメソッド:

  • compiler_web プロジェクトメソッド (実際の "実行モード" プロパティに関わらず評価されます)

  • Webコンテキストにおいて PROCESS 4D TAGS コマンドによって処理される基本的にすべてのコード (.shtmlページを通して実行されるものなど)

  • "公開オプション: 4DタグとURL (4DACTION)..." 属性が有効なプロジェクトメソッド。

  • "RESTリソースとして公開" 属性が有効なテーブルのトリガー

  • REST で呼び出された ORDA データモデルクラス関数

  • "REST サーバー" プロパティを選択されたプロジェクトメソッド (旧式RESTコール)

これらそれぞれのメソッドとコードの部分について、スレッドセーフのルールが遵守されているかをコンパイラーがチェックし、問題があった場合にはエラーを返します。 スレッドセーフルールについての詳細は、4Dランゲージリファレンス マニュアルの プロセス の章の スレッドセーフなメソッドの書き方 の段落を参照ください。

4D Webコードのスレッドセーフティ

Web関連のほとんどの 4Dコマンドや関数、データベースメソッド、そして URL がスレッドセーフとなり、プリエンプティモードで使用できます。

4Dコマンドとデータベースメソッド

すべての Web関連コマンドはスレッドセーフです:

  • Webサーバー テーマの全コマンド
  • HTTPクライアント テーマの全コマンド

Web関連のデータベースメソッドもスレッドセーフであり、プリエンプティモードで使用することが可能です: On Web Authentication, On Web Connection, On REST Authentication...)。

もちろん、これらのメソッドによって実行されるコードもまたスレッドセーフである必要があります。

WebサーバーURL

以下の 4D WebサーバーURLはスレッドセーフであり、プリエンプティモードで使用可能です:

  • 4daction/ (呼び出されるプロジェクトメソッドもまたスレッドセーフでなければいけません)
  • 4dcgi/ (呼び出されるデータベースメソッドもまたスレッドセーフでなければいけません)
  • 4dwebtest/
  • 4dblank/
  • 4dstats/
  • 4dhtmlstats/
  • 4dcacheclear/
  • rest/
  • 4dimgfield/ (ピクチャーフィールドの Webリクエストに対し PROCESS 4D TAGS によって生成されます)
  • 4dimg/ (ピクチャー変数の Webリクエストに対し PROCESS 4D TAGS によって生成されます)

プリエンプティブWebプロセスアイコン

ランタイムエクスプローラーと 4D Server管理ウィンドウの両方において、プリエンプティブな Webプロセスに対し専用アイコンが表示されるようになりました:

プロセスタイプアイコン
プリエンプティブWebメソッド