Máy chủ, tùy thuộc vào cấu hình của nó, nói chung có thể phục vụ hàng trăm yêu cầu cùng một lúc - nếu sử dụng Apache, MaxClients
tùy chọn cấu hình là tùy chọn nói:
Các MaxClients
chỉ thị đặt ra giới hạn về số lượng yêu cầu đồng thời sẽ được phục vụ.
Mọi nỗ lực kết nối vượt quá
MaxClients
giới hạn thông thường sẽ được xếp hàng đợi, tối đa là một con số dựa trên chỉ thị ListenBacklog.
Sau khi một tiến trình con được giải phóng ở cuối một yêu cầu khác, kết nối sẽ được phục vụ.
Thực tế là hai khách hàng yêu cầu cùng một trang không phải là một vấn đề.
Vì thế :
Các yêu cầu sẽ được xếp hàng đợi?
Không; ngoại trừ nếu:
- có một số khóa ở đâu đó - có thể xảy ra, ví dụ: nếu hai yêu cầu đến từ cùng một ứng dụng khách và bạn đang sử dụng phiên dựa trên tệp trong PHP : trong khi một tập lệnh đang được thực thi, phiên bị "khóa", điều này có nghĩa là máy chủ / máy khách sẽ phải đợi cho đến khi yêu cầu đầu tiên kết thúc (và tệp được mở khóa ) để có thể sử dụng tệp để mở phiên cho người dùng thứ hai.
- các yêu cầu đến từ cùng một khách hàng VÀ cùng một trình duyệt; hầu hết các trình duyệt sẽ xếp hàng các yêu cầu trong trường hợp này, ngay cả khi không có gì phía máy chủ tạo ra hành vi này.
- có nhiều hơn
MaxClients
các quy trình hiện đang hoạt động - hãy xem phần trích dẫn từ hướng dẫn sử dụng của Apache ngay trước đó.
Liệu họ có bị bỏ qua?
Không: điều này có nghĩa là chỉ một người dùng có thể sử dụng một trang web cùng một lúc; Điều này sẽ không được tốt đẹp, phải không?
Nếu đúng như vậy thì mình không đăng được câu trả lời này, các bạn ở đâu nhấn F5 cùng lúc để xem có người trả lời nhé!
(Chà, SO không có trong PHP, nhưng các nguyên tắc thì giống nhau)
Có khả năng nào khác không?
Vâng ^^
chỉnh sửa sau khi bạn chỉnh sửa OP và nhận xét:
Mỗi yêu cầu sẽ có phiên bản script riêng của nó?
Không có cái gọi là " phiên bản tập lệnh ": nói một cách đơn giản, điều gì đang xảy ra khi một yêu cầu đối với một tập lệnh được thực hiện là:
- máy chủ web phân nhánh một quy trình khác để xử lý yêu cầu (thông thường, vì lý do hiệu suất, những nhánh này được thực hiện trước, nhưng điều này không thay đổi gì)
- quá trình đọc tập lệnh PHP từ đĩa
- một số quá trình có thể làm điều này cùng một lúc : không có khóa khi đọc tệp
- tập tin được tải vào bộ nhớ; trong một khối bộ nhớ riêng biệt cho mỗi quá trình
- tệp PHP trong bộ nhớ được " biên dịch " thành mã opcodes - vẫn còn trong bộ nhớ
- các mã opcodes đó được thực thi - vẫn từ khối bộ nhớ thuộc quy trình trả lời yêu cầu của bạn
Thực sự, bạn có thể có hai người dùng gửi yêu cầu đến cùng một tập lệnh PHP (hoặc đến các tập lệnh PHP riêng biệt mà tất cả đều bao gồm cùng một tệp PHP) ; đó chắc chắn không phải là vấn đề, hoặc không có trang web nào tôi từng làm việc sẽ hoạt động!