2

私はしばらく前にphp検索エンジンを作成しましたが、すでに検索したのではないかと疑っています.phpスクリプトへの複数の同時アクセスについて話しているスタックオーバーフローに関する多くの質問を見ましたが、追加、変更など. .

検索エンジン (またはユーザー入力に基づいて異なる応答を生成するその他のスクリプト) が検索を終了するのに 20 秒かかるとします。

ユーザー A がスクリプトにアクセスする

ユーザー B は、ユーザー A より 10 秒遅れてスクリプトにアクセスします (したがって、スクリプトはまだユーザー A に「応答」していません)。

何が起こるか?サーバーは「ファイルの別のインスタンスを実行する」ので、両方のユーザーが応答するか、何かが台無しになりますか?

また、php スクリプトが実行を完了するのに長い時間がかかり、人がそれにアクセスしてから応答を待たずに立ち去った場合、php スクリプトは最後に到達するまで必要なすべてのことを行いますか? (論理的には、この最後の質問では、スクリプトは最後に到達するまですべてを実行することがわかります。これは、人がリクエストを作成し、回答が来るのを待ち、それでも閉じても、php スクリプトの実行を停止するものは何もないためです。しかし、私は完全に確信したいので、まだ尋ねています)

4

2 に答える 2

3

両方の人が、スクリプトの独自のインスタンスを持っています。データが変更された場合、データの一貫性に関する問題が引き続き発生する可能性があります。HTTP はステートレス プロトコルであるため、結果を待たずに人が去った場合、スクリプトは最後まで実行されます。

于 2011-10-19T00:52:42.027 に答える
0

すべてのユーザーのセッションはスレッドで処理されます。すべてが待ち行列に入っており、何も混乱していません。

ただし、条件によっては問題が発生する場合があります。

例: ユーザーが DB の特定のフィールドを要求しましたが、最初のユーザーのスレッドが待機中または中断されている間に、別のユーザーがそのフィールドを削除しました。しかし、それは本当に後回しであり、それが発生した場合は例外が発生し、それを処理するのは私たちのスクリプトの義務です。

于 2011-10-19T20:43:06.397 に答える