PHP は本質的に非永続的な言語です。リクエスト間で何も共有しません。
永続性は常に外部で管理されます。つまり、セッションは通信時に Cookie によって処理され、永続性セッション ストレージ (通常はファイルですが、Drupal の場合はデータベース ストレージ) が読み込まれます。アプリケーションの内容は、データベース、ファイルなどです。
PHP では、いくつかの要求に対してオブジェクトを再利用して、永続的なサーバーを作成することはできません。実際、PHP の高度な使い方を試してみることもできますが、それは言語の性質ではなく、そのために構築されたものでもありません。すべてを最初にロードする必要があり、リクエスト処理の終了後にすべてが強制終了されます。
したがって、すべての PHP CMS またはフレームワーク (Drupal もその 1 つ) は、この事実を巧妙に処理するように構築されています。そのための主な戦略は、キャッシュを使用して環境を再構築する時間を短縮することです (いつものように、PHP の外部で永続性を管理します)。Drupal で負荷の高いアプリケーションを管理するには、キャッシュ管理を微調整する必要があります。
- キャッシュを有効にする(もちろん)
- たとえば、一部のクラスとパス キャッシュには APC、その他のキャッシュには memcache または mongodb、その他には MySQL (デフォルト) など、複数のキャッシュ レイヤーを使用します。セッション プロキシなどのモジュールを使用して、セッション管理をディスパッチすることもできます。 redis サーバー、または mongodb、memcache、redis など
- varnish のようなリバース プロキシ キャッシュを使用して、パブリック ページ キャッシュを管理したり、varnish ESI を使用してページ パーツを管理したりすることもできます。
これを Java や C# などの永続的なアプリケーション サーバーと比較すると、これは悪い点のように思えます。しかし、初期の制約は、開発者が物事を行うためのより良い方法を見つけるのに役立つ場合があります (私は、Drupal が物事を行うための最善の方法を常に使用すると言っているわけではありません :-) )。また、負荷の高い Web サイトの多くは PHP (キャッシュ付き) を使用しています。つまり、ウェブサイトのやり方が違うだけです。