3

HTTPリクエストを受信したときにPHPスクリプトの新しいインスタンスを開始する代わりに、1つのPHPスクリプトで複数のリクエストを処理する方法はありますか?

4

6 に答える 6

2

PHP は、「Share Nothing」の概念に基づいて構築されており、分散ネットワークを使用することでアプリケーションの負荷分散とスケーリングを向上させることができます。だから「いいえ」これはできません。開始コストが高いと思われる場合は、オブジェクト/データ/ビューを概念的に「キャッシュ」するようにアーキテクチャを調整してください。serialize() などを使用します。

于 2009-09-29T19:15:17.053 に答える
1

ファイルをHTTPサーバーにしてプロセスとして実行する場合は、そうです。

Apacheとmod_phpを介して実行された場合、いいえ。

(なぜとにかくそれが欲しいのですか?)

于 2009-09-29T19:03:29.150 に答える
1

そのためのhttpリクエストの実装を見たことがありません。私が達成できたのは、すべてのリクエストが返ってくるのを待つことだけです。これは、プロセスをフォークしてバックグラウンドに送信することにより、コマンドラインで実行できます。または、そのためにGearman(分散作業)を利用することもできます。

于 2009-09-29T19:04:25.237 に答える
1

私の知る限り、それを行う方法はありません。私が考えることができる最も近いものは、(xcacheまたはAPC)のようなphpオペコードキャッシュを使用することです。これらは、スクリプトの実行を高速化するためにコードをキャッシュします。すべてのリクエストには、独自のスクリプトインスタンスがあると思います。

于 2009-09-29T19:05:09.073 に答える
1

必要なのは、データをキャッシュすることです。

PHP スクリプトは、キャッシュ内にリクエストの有効なデータがあるかどうかを確認するだけです。そうでない場合は、データベースを読み取ってキャッシュを更新し、結果をユーザーに返します。

さまざまなキャッシュ ライブラリを調べて、キャッシュをどのようにスケーリングするかを慎重に検討することをお勧めします。開始する場所の 1 つは Zend_Cache で、おそらくバックエンドで memcached を使用します。

于 2009-09-29T19:47:59.423 に答える
0

HTTPリクエストを処理するスクリプトは、ソケットを使用して小さなPHPデーモンからデータを取得できます。

PHPデーモンに役立つライブラリは次のとおりです。http://github.com/kvz/system_daemon

そしていくつかのドキュメント:

http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

于 2009-10-21T12:32:06.350 に答える