4

PHP でデータや機能をプールすることは可能ですか?

私が書いたアマチュアっぽい PHP コードは、ウェイクアップして応答を処理し、関数をロードし、データベース接続を開き、オブジェクトを作成し、それらを初期化し、応答が処理されてから 0.01 秒後に終了し、次の要求をリロードします。解析し、主に同じことを再度実行します。

それは無意味であり、機能/データ/オブジェクトのプーリングを持たないことは、私の多くの仕事の価値を奪うことに気づきました。たとえば、クラスを作成して、リクエストごとにすべてが再初期化されることを確認できます。意味のあるオブジェクト構造を開発しようとする意味は何ですか?

では、PHP を作成してデータと機能をプールするにはどうすればよいでしょうか。

4

3 に答える 3

4

PHP には 1 つのソリューション プーリングや永続的な状態はありません。Java のようなアプリケーションの状態はありません。多かれ少なかれ、HTTP であるステートレス プロトコルに従います。あなたができることは次のとおりです。

  • データベースへの永続的な接続を作成します (つまり、同じパラメーターで呼び出すと再利用されます。魔法のように存在するわけではありませんが、実際の接続のオーバーヘッドを回避できます)。
  • オブジェクトをセッションに保存して、計算された状態を維持します (オブジェクトはシリアル化され、次のリクエストでシリアル化解除されます)。
  • Web サーバーから独立して実行されているデーモン (ギアマン サーバーとワーカーが思い浮かびます) への重要な、しかし 1 回限りの初期化を必要とする作業をルーティングします。
  • しかし、結局のところ、アプリケーションがグローバルな状態を必要とする場合、PHP は適切なソリューションではない可能性があります。
于 2011-06-09T19:29:33.037 に答える
3

PHP がボトルネックになることはめったにありません。当社のサーバーは、ピーク時に毎秒数百のリクエストを処理します。そして、それらも小さな要求ではありません。非論理的なように思えますが、PHP は実際には非常に高速です。また、APC キャッシュを使用してコンパイル済みの PHP ファイルをキャッシュし、さらに高速化することもできます。次に、MemCache を使用してデータを保存できるため、MySQL の次善のクエリ キャッシュに依存することなく、クエリ結果やそのようなデータを簡単にキャッシュできます。

于 2011-06-09T21:02:39.827 に答える
1

私はあなたと同様の懸念を共有しています。しかし奇妙なことに、 PHP は目がくらむほど高速です。サーバーによってキャッシュされる必要があるデータベース クエリとは別に、接続の問題だけが残っています。簡単にプールできます。

私のシステムでは、応答のために数 kb の XML ファイルを解析する必要さえあります。それでもボトルネックは常にデータベースサーバーです。

ただし、PHP のこの一時的な状態には良い面もあります。問題のある要求、システムのクラッシュは、次の接続に悪影響を及ぼしません。私にはより安定しているようです。

于 2011-06-09T20:53:18.427 に答える