Serwer w zależności od konfiguracji może generalnie obsługiwać setki żądań jednocześnie - w przypadku korzystania z Apache MaxClients
opcja konfiguracji mówi:
MaxClients
Dyrektywa ustala limit liczby jednoczesnych żądań, które będą służyły.
Wszelkie próby połączenia przekraczające
MaxClients
limit będą zwykle umieszczane w kolejce, do liczby określonej na podstawie dyrektywy ListenBacklog.
Gdy proces potomny zostanie zwolniony na końcu innego żądania, połączenie zostanie następnie obsłużone.
Fakt, że dwóch klientów żąda tej samej strony, nie stanowi problemu.
Więc :
Czy wnioski będą umieszczane w kolejce?
Nie; chyba że:
- gdzieś jest blokada - co może się zdarzyć, na przykład, jeśli dwa żądania pochodzą od tego samego klienta i używasz sesji opartych na plikach w PHP : podczas wykonywania skryptu sesja jest „zablokowana”, co oznacza, że serwer / klient będzie musiał czekać do zakończenia pierwszego żądania (i odblokowania pliku ), aby móc użyć pliku do otwarcia sesji dla drugiego użytkownika.
- żądania pochodzą od tego samego klienta ORAZ tej samej przeglądarki; większość przeglądarek będzie w tym przypadku kolejkować żądania, nawet jeśli nic nie powoduje takiego zachowania po stronie serwera.
- jest więcej niż
MaxClients
obecnie aktywnych procesów - zobacz cytat z podręcznika Apache tuż przed.
Czy zostaną zignorowani?
Nie: oznaczałoby to, że tylko jeden użytkownik może korzystać ze strony internetowej w tym samym czasie; to nie byłoby całkiem miłe, prawda?
Gdyby tak było, nie mógłbym opublikować tej odpowiedzi, gdybyś nacisnął F5 w tym samym momencie, aby zobaczyć, czy ktoś odpowiedział!
(Cóż, SO nie jest w PHP, ale zasady są takie same)
Jakaś inna możliwość?
Tak ^^
edytuj po edycji OP i komentarza:
Czy każde żądanie będzie miało własną instancję skryptu?
Nie ma czegoś takiego jak „ instancja skryptu ”: mówiąc prosto, to, co dzieje się, gdy wysyłane jest żądanie do skryptu, to:
- serwer sieciowy forkuje inny proces do obsługi żądania (często ze względu na wydajność te rozwidlenia są tworzone z wyprzedzeniem, ale to nic nie zmienia)
- proces odczytuje skrypt PHP z dysku
- kilka procesów może to robić w tym samym czasie : nie ma blokady odczytu pliku
- plik jest ładowany do pamięci; w osobnym bloku pamięci dla każdego procesu
- plik PHP w pamięci jest „ kompilowany ” do opkodów - wciąż w pamięci
- te rozkazy są wykonywane - nadal z bloku pamięci, który należy do procesu odpowiadającego na twoje żądanie
Naprawdę, możesz mieć dwóch użytkowników wysyłających żądanie do tego samego skryptu PHP (lub do różnych skryptów PHP, które zawierają ten sam plik PHP) ; to zdecydowanie nie jest problem, albo żadna z witryn, nad którymi kiedykolwiek pracowałem, nie zadziałała!