Cách PHP, Java, ASP xử lý request

Chào buổi sáng ạ,

Here is how PHP or ASP handles a file request:

  1. Sends the task to the computer’s file system.
  2. Waits while the file system opens and reads the file.
  3. Returns the content to the client.
  4. Ready to handle the next request.
    Here is how Node.js handles a file request:
  5. Sends the task to the computer’s file system.
  6. Ready to handle the next request.
  7. When the file system has opened and read the file, the server returns the content to the client.
    Node.js eliminates the waiting, and simply con

Cơ chế bất đồng bộ, event driven, event loop, … của NodeJS thì em hiểu rồi, còn đoạn khoanh tròn server có bị blocking khi xử lý một request không? Trong khoảng thời gian chờ để response là server đã bị blocking đúng không? Theo em hiểu nếu CPU có nhiều core thì xử lý parallel, mỗi request sẽ do một thread xử lý độc lập, nhưng 1000 request đồng thời thì không thể xử lý parallel 1000 request này được vì thread và core có giới hạn, vì vậy CPU chuyển qua xử lý concurrent. Em mới học ASP, còn khá mơ hồ, mong được giải thích chi tiết.

1 Like

còn đoạn khoanh tròn server có bị blocking khi xử lý một request không?

Thread xử lý sẽ bị block (bị treo và không làm gì được) khi chờ phản hồi từ file system/OS.
Điều đó có nghĩa là web server (truyền thống - có nhiều web server hiện đại cũng support non-blocking IO rồi) sẽ không bị block khi xử lý request đó, vì web server thường có nhiều thread khác để xử lý các request khác, và chạy trên máy nhiều core (tớ không nói tới TH cực đoan khi cậu chạy trên máy 1 core và config cho web server chỉ có 1 thread :smile:).

Theo em hiểu nếu CPU có nhiều core thì xử lý parallel, mỗi request sẽ do một thread xử lý độc lập, nhưng 1000 request đồng thời thì không thể xử lý parallel 1000 request này được vì thread và core có giới hạn, vì vậy CPU chuyển qua xử lý concurrent.

Cậu hiểu đúng rồi, cơ mà nó có vẻ không liên quan tới điều cậu hỏi :smile:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?