2016-12-21 20 views
17

Tôi sử dụng php và laravel làm dịch vụ web của mình.Máy chủ web xử lý các yêu cầu như thế nào?

Tôi muốn biết laravel lưu trữ và xử lý yêu cầu trong tình huống này?

  1. yêu cầu các bộ điều khiển khác nhau từ nhiều người dùng;
  2. yêu cầu cùng một bộ điều khiển từ cùng một người dùng.

Laravel có lưu trữ các yêu cầu này trong hàng đợi theo trình tự mà các yêu cầu đã đạt được không?

Yêu cầu quy trình song song của laravel cho người dùng khác nhau và theo thứ tự cho cùng một người dùng?

Ví dụ: có hai yêu cầu từ người dùng. Hai yêu cầu định tuyến đến hai phương thức trong cùng một bộ điều khiển. Trong khi yêu cầu đầu tiên sẽ tốn một thời gian dài để xử lý phía máy chủ, yêu cầu thứ hai sẽ tốn rất ít thời gian. Khi người dùng thiết lập yêu cầu đầu tiên, sau đó yêu cầu thứ hai, mặc dù yêu cầu thứ hai tốn rất ít thời gian, phía máy chủ sẽ không xử lý yêu cầu thứ hai cho đến khi xử lý xong yêu cầu đầu tiên.

Vì vậy, tôi muốn biết Laravel lưu trữ và xử lý yêu cầu như thế nào?

+6

Không có gì về Laravel. Điều này có thể giúp http://stackoverflow.com/questions/1430883/simultaneous-requests-to-php-script – rNix

Trả lời

20

Laravel không xử lý yêu cầu trực tiếp, đây là thứ được quản lý bởi máy chủ web và PHP của bạn. Laravel nhận được một yêu cầu đã được xử lý bởi máy chủ web của bạn, bởi vì nó chỉ là một công cụ, được viết bằng PHP, xử lý dữ liệu liên quan đến một cuộc gọi yêu cầu. Vì vậy, miễn là máy chủ web của bạn biết cách thực thi PHP và gọi tệp tin index.php thích hợp, Laravel sẽ được khởi động và xử lý dữ liệu yêu cầu mà nó nhận được từ máy chủ web. Vì vậy, nếu máy chủ web của bạn có thể nhận được 2 cuộc gọi khác nhau (thường là họ làm điều đó trong hàng trăm), nó sẽ cố gắng khởi tạo 2 tiến trình PHP (sub), và bạn nên có 2 cá thể Laravel trong bộ nhớ chạy song song. . Vì vậy, nếu bạn có mã phụ thuộc vào mã anther, có thể mất quá nhiều thời gian để thực thi tùy thuộc vào nhiều yếu tố khác, bạn sẽ phải tự giải quyết vấn đề đó, trong ứng dụng Laravel của bạn.

Điều chúng ta thường làm là chỉ thêm dữ liệu vào cơ sở dữ liệu và sau đó nhận lại kết quả từ một phép tính được thực hiện với dữ liệu đã có trong kho dữ liệu. Vì vậy, nó không quan trọng thứ tự các dữ liệu có được đến kho dữ liệu, mà một trong những nhận được trong đầu tiên, kết quả cuối cùng là luôn luôn giống nhau. Nếu bạn không thể dựa vào loại phương pháp này, bạn sẽ phải chuẩn bị ứng dụng của mình để xử lý nó.

enter image description here

+0

hai yêu cầu trong ví dụ không phụ thuộc vào nhau, chỉ được xử lý bằng hai phương thức trong cùng một bộ điều khiển. –

+0

Không quan trọng, mọi yêu cầu đều độc lập, vì chúng được gọi độc lập và sinh ra trong các quy trình khác nhau bằng PHP-FPM. Đó là cách người dùng yêu cầu một trang tĩnh sẽ nhận được nó trước khi một người dùng khác yêu cầu một báo cáo thực sự phức tạp. Đã chỉnh sửa để thêm biểu đồ luồng. –

2

Mọi thứ trong PHP bắt đầu như một quá trình riêng biệt. Các quy trình này độc lập với nhau cho đến khi một số tài nguyên được chia sẻ có trong Ảnh.

Trong trường hợp của bạn, một người dùng được xử lý một phiên và phiên là tệp dựa theo mặc định. Tệp phiên là tài nguyên được chia sẻ cho các quy trình có nghĩa là bạn chỉ có thể thực hiện một lệnh gọi tới PHP tại một thời điểm cho một người dùng.

Nhiều người dùng có thể gọi bất kỳ số lượng quy trình nào cùng một lúc tùy thuộc vào khả năng của hệ thống của bạn.

Các vấn đề liên quan