PHPエンジンがすでにサーバー上でスクリプトを実行している最中の場合、同じスクリプトに対する他の同時ブラウザー要求はどうなりますか?
- リクエストはキューに入れられますか?
- それらは無視されますか?
- 各リクエストには独自のスクリプトインスタンスがありますか?
- 他の可能性はありますか?
回答:
サーバーは、その構成に応じて、通常、同時に数百の要求を処理MaxClients
できます。Apacheを使用している場合、構成オプションは次のようになります。
MaxClients
ディレクティブが提供される同時リクエスト数を設定します。 制限を
超える接続試行MaxClients
は通常、ListenBacklogディレクティブに基づく数までキューに入れられます。
別のリクエストの終了時に子プロセスが解放されると、接続が処理されます。
2つのクライアントが同じページを要求するという事実は問題ではありません。
そう :
リクエストはキューに入れられますか?
番号 ; 場合を除き :
MaxClients
現在アクティブなプロセス以上のものがあります-直前のApacheのマニュアルからの引用を参照してください。それらは無視されますか?
いいえ:これは、1人のユーザーだけが同時にWebサイトを使用できることを意味します; これはあまりいいことではないでしょう?
もしそうなら、誰かが答えたかどうかを確認するために同時にF5を押した場合、私はこの答えを投稿できませんでした!
(まあ、SOはPHPにはありませんが、原則は同じです)
他の可能性はありますか?
はい^^
OPとコメントを編集した後に編集します:
各リクエストには独自のスクリプトインスタンスがありますか?
「スクリプトインスタンス」のようなものはありません:簡単に言えば、スクリプトへのリクエストが行われた場所で何が起こっているのか:
実際には、2人のユーザーが同じPHPスクリプト(またはすべて同じPHPファイルを含む別個のPHPスクリプト)にリクエストを送信することができます。それは間違いなく問題ではありません、または私が今まで取り組んだウェブサイトのどれも機能しませんでした!
2つのクライアントが同時にサーバーを呼び出す場合、サーバーはおそらく両方のクライアントにほぼ同時に応答できます。ここでのクライアントは、ブラウザーレベルで定義します。
つまり、同じマシン上で、2つのブラウザを使用して同じウェブサイト/ページを同時にロードする場合は、両方を同時にロードする必要があります。
ただし、PHPについて話しているので、セッションについて特別な注意を払う必要があります。ページがセッションを使用する場合、サーバーは一度に1つのページのみを提供します。これは、スクリプトが終了するまでセッションファイルがロックされるためです。
この例を見てください。2つのファイルは、同じセッション、つまり同じブラウザの同じユーザーからロードされます。
scripta.php requested scripta.php served
------+---+---------------------------------+------------------------>
scripta.php started
scriptb.php requested scriptb.php started
---------------+-------------------------------+-----------------+--->
scriptb.php served.
scriptb.phpは、scripta.phpが提供された後にのみ開始されることに注意してください。これは、scripta.phpが開始されると、セッションファイルが他のスクリプトにロックされ、scripta.phpがセッションファイルに書き込めるようになるためです。scripta.phpが完了すると、セッションファイルのロックが解除されるため、他のスクリプトで使用できるようになります。したがって、scriptb.phpは、セッションファイルが解放されるまで待機し、その後、セッションファイルをロックして使用します。
このプロセスは繰り返され続け、複数のスクリプトが同じセッションファイルに書き込んで遅延を引き起こすのを防ぎます。したがってsession_write_close
、特に多くのiframeまたはAJAXを使用しているWebサイトでは、セッションを使用しなくなったときに()を呼び出すことをお勧めします。
非常に非標準的なセットアップを実行している場合を除き、Webサーバー(Apache、IIS、nginxなど)には、サーバーに送信される要求ごとにPHPを個別に実行する複数のプロセスがあります。同時リクエストは同時に処理されます。