Abhängig von seiner Konfiguration kann der Server im Allgemeinen Hunderte von Anforderungen gleichzeitig bearbeiten. Wenn Sie Apache verwenden, MaxClients
lautet die Konfigurationsoption wie folgt:
Die MaxClients
Richtlinie legt die Grenze für die Anzahl der gleichzeitig zugestellten Anfragen fest.
Alle Verbindungsversuche, die das
MaxClients
Limit überschreiten, werden normalerweise bis zu einer Nummer in die Warteschlange gestellt, die auf der ListenBacklog-Direktive basiert.
Sobald ein untergeordneter Prozess am Ende einer anderen Anforderung freigegeben wird, wird die Verbindung hergestellt.
Die Tatsache, dass zwei Clients dieselbe Seite anfordern, ist kein Problem.
So :
Werden die Anfragen in die Warteschlange gestellt?
Nein ; außer wenn :
- Irgendwo gibt es eine Sperre - was beispielsweise passieren kann, wenn die beiden Anforderungen vom selben Client stammen und Sie dateibasierte Sitzungen in PHP verwenden : Während ein Skript ausgeführt wird, ist die Sitzung "gesperrt" bedeutet, dass der Server / Client warten muss, bis die erste Anforderung abgeschlossen (und die Datei entsperrt ) ist, um die Sitzung zum Öffnen der Sitzung für den zweiten Benutzer verwenden zu können.
- Die Anforderungen kommen vom selben Client UND vom selben Browser. Die meisten Browser stellen die Anforderungen in diesem Fall in die Warteschlange, selbst wenn auf der Serverseite dieses Verhalten nicht auftritt.
- Es gibt mehr als
MaxClients
derzeit aktive Prozesse - siehe das Zitat aus dem Apache-Handbuch kurz zuvor.
Werden sie ignoriert?
Nein, dies würde bedeuten, dass nur ein Benutzer gleichzeitig eine Website verwenden kann. das wäre doch nicht ganz schön, oder?
Wenn dies der Fall wäre, könnte ich diese Antwort nicht posten, wenn Sie im selben Moment F5 drücken würden, um zu sehen, ob jemand geantwortet hat!
(Nun, SO ist nicht in PHP, aber die Prinzipien sind die gleichen)
Irgendeine andere Möglichkeit?
Ja ^^
Bearbeiten, nachdem Sie das OP und den Kommentar bearbeitet haben:
Wird jede Anfrage eine eigene Skriptinstanz haben?
Es gibt keine " Skriptinstanz ": Einfach ausgedrückt, was passiert, wenn eine Anforderung an ein Skript gestellt wird, ist:
- Der Webserver gibt einen anderen Prozess vor , um die Anforderung zu verarbeiten (häufig werden diese Gabeln aus Leistungsgründen im Voraus erstellt, dies ändert jedoch nichts).
- Der Prozess liest das PHP-Skript von der Festplatte
- Dies können mehrere Prozesse gleichzeitig tun : Das Lesen von Dateien ist nicht gesperrt
- Die Datei wird in den Speicher geladen. in einem eigenen Speicherblock für jeden Prozess
- Die PHP-Datei im Speicher wird zu Opcodes " kompiliert " - noch im Speicher
- Diese Opcodes werden ausgeführt - immer noch aus dem Speicherblock, der zu dem Prozess gehört, der Ihre Anfrage beantwortet
In Wirklichkeit können zwei Benutzer eine Anfrage an dasselbe PHP-Skript senden (oder an verschiedene PHP-Skripte, die alle dieselbe PHP-Datei enthalten) . Das ist definitiv kein Problem, oder keine der Websites, an denen ich jemals gearbeitet habe, würde funktionieren!