0

これが私の質問です。Django または web2py を Python (Web フレームワークとして) または Java WEB アプリケーション (単純なサ​​ーブレット アプリまたは複雑な struts2/wicket/whatever フレームワーク) で検討してください。彼らは、私が気に入っている点を少なくとも 2 つ共有しています。

  1. コンテキスト環境、または要求またはセッション コンテキスト (つまり、グローバル データ、シングルトーン、プールなど、メモリ内の値と動作を共有できるもの) からデータにアクセスする方法があります。
  2. クラスは一度だけロード/初期化されます。おそらく私は何かが欠けているかもしれませんが、PHPのAFAIKでは、クラスはPER REQUESTベースでロードおよび初期化されます(したがって、通常のクラスでは、(たとえば)静的値を変更すると、これは現在のリクエストでのみ存続し、さらにはその値にヒットする同時リクエストは別のものを取得します)。

それをphpで取得する方法はありますか?たとえば、Python/Django では、通常のクラスを宣言することができ、そのクラスは静的データを保持するか、真のシングルトンにすることができ (これもまた、プールまたは一種の中央キュー マネージャー)、django サーバーが停止するまで同じオブジェクトになります (注: Python のモジュールは、インポート時に Python コンテキストにロードされたままになります)。

4

1 に答える 1

0

PHP の「コンテキスト」がリクエストごとに存在するという事実は、PHP が Web サーバーでどのように機能するかの核心です。

リクエストごとにデータがリセットされないJavaや他の言語のように動作させたい場合は、基本的に2つのオプションがあります。

  • データをファイル、DB などにシリアライズし、次のリクエストでリロードします
  • Web サーバーを介してページを提供する代わりに、PHP を使用してサーバーを記述します。

データをストレージにシリアル化し、後続のリクエストで再ロードするのが一般的なアプローチです。

PHP 自体でサーバーを作成することは可能ですが、お勧めしません。多大な努力にもかかわらず、PHP は依然としてメモリ管理の面で問題があり、実行時間の長い PHP プロセスでメモリ リークが発生する可能性が非常に高くなります。

于 2013-07-15T17:47:59.817 に答える