PHP: Ưu điểm của FastCGI so với mod_php là gì?


30

Gần đây tôi đã gợi ý rằng tôi sử dụng FastCGI với PHP. Bây giờ tôi đã truy cập trang FastCGI và đọc nó nhưng tôi không thực sự hiểu những lợi thế là gì.

Câu trả lời:


37

Sử dụng mod_php mỗi công nhân Apache có toàn bộ trình thông dịch PHP được tải vào nó. Vì Apache cần một quy trình công nhân cho mỗi yêu cầu đến, nên bạn có thể nhanh chóng kết thúc với hàng trăm công nhân Apache đang sử dụng, mỗi công cụ có trình thông dịch PHP của riêng họ được tải, tiêu tốn một lượng lớn bộ nhớ.

(Lưu ý, đây không phải là hoàn toàn chính xác, Apache worker_mpmcho phép bạn phục vụ nhiều yêu cầu với một nhân viên Apache luồng duy nhất. Tuy nhiên, ngay trong năm 2009, đây không phải là cách đề nghị để triển khai PHP vì nghi ngờ vấn đề luồng với các phần mở rộng PHP.)

Bằng cách sử dụng PHP trong chế độ fast_cgi (sử dụng cái gì đó như spawn-fcgi từ gói lighttpd) có những lợi ích sau

  • điều chỉnh số lượng công nhân PHP riêng biệt với số lượng kết nối đến
  • cho phép bạn đặt nhân viên PHP của bạn trên một máy chủ khác hoặc mở rộng quy mô trên nhiều máy chủ mà không thay đổi tầng web của bạn
  • cho phép bạn linh hoạt chọn một máy chủ web khác, như nginx hoặc lighttpd
  • cho phép bạn chạy ứng dụng PHP của mình trong một miền bảo mật khác trên máy chủ web của bạn

5

FastCGI có nghĩa là các bit php không chạy trong cùng tiến trình với các bit apache, không giống như mod_php. Sự tách biệt này có thể có một số lợi thế nhất định khi khởi động lại máy chủ hoặc xử lý các ứng dụng chạy trốn - trong trường hợp mod_php có nghĩa là đó là quá trình apache "chạy trốn", nhưng theo fastcgi, đó chỉ là một quá trình mà apache đang nói đến, vì vậy toàn bộ máy chủ không cần phải gỡ xuống.


4

Một ưu điểm khác chưa được đề cập là với mod_fcgid(đó là một triển khai mới hơn để sử dụng FastCGI trên Apache) và suexec bạn có thể nhận ra các thiết lập trong đó các vhost khác nhau sử dụng các người dùng Linux khác nhau để thực thi, có thể là một lợi ích bảo mật thực sự trong szenario lưu trữ được chia sẻ .

Với mod_php, tất cả các vhost đều có chung một người dùng, đó là người dùng của Apache. Điều này có thể dẫn đến các vấn đề bảo mật.


Nó phụ thuộc vào MPM được sử dụng trong thiết lập httpd Apache cụ thể này. Ví dụ với MPM- itk ( mpm-itk.sesse.net ) có thể sử dụng mod_php và có các tập lệnh (hoặc tốt hơn: các quy trình httpd) đang chạy trong ngữ cảnh của người dùng khác.
joschi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.