Phân biệt php CGI,SuPHP,FastCGI PHP handler ?

Khi chạy một site PHP, server phải cần thông dịch PHP và tạo ra trang web khi người dùng truy cập vào. Tùy vào từng người dùng, thời gian địa điểm mà webiste có thể được tạo ra khác nhau. Code PHP được phiên dịch dựa vào bộ thư viện PHP như PHP4 và PHP5. PHP handler sẽ điều khiển quá trình những gì load lên từ bộ thư viện PHP

 1.PHP handler là gì ?

Khi chạy một site PHP, server phải cần thông dịch PHP và tạo ra trang web khi người dùng truy cập vào. Tùy vào từng người dùng, thời gian địa điểm mà webiste có thể được tạo ra khác nhau. Code PHP được phiên dịch dựa vào bộ thư viện PHP như PHP4 và PHP5. PHP handler sẽ điều khiển quá trình những gì load lên từ bộ thư viện PHP.

Có nhiều PHP Handler hiện nay được sử dụng như DSO, CGI, SuPHP, FastCGI.Mỗi handler có những tác động đến performance của Apache khác nhau bởi vì nó xác định Apache sẽ dùng PHP như thế nào.

Có một vấn đề quan trọng là tùy thuộc vào tình hình (máy chủ, CPU, Ram, Nhu cầu, mục đích) mà chúng ta sẽ chọn handler thích hợp. Không có handler nào hoàn toàn tốt hơn cái nào. Vì vậy phải lựa chọn cho phù hợp.

Hiện tại thì FastCGI đang được dùng khá phổ biến.

Sau đây sẽ đề cập tổng quan về tất cả các PHP Handler. So sánh hiệu năng của các handler này.

2. Danh sách các PHP Handler

2.1 DSO

Được biết như là mod_php. Mặc dù được xem như là một phiên bản cấu hình cũ nhưng mặc nhiên nó là Handler nhanh nhất. Nó chạy PHP như một Apache Module. Điều đó có nghĩa là các PHP Script sẽ chạy dưới quyền của Apache user. Đó là user 'nobody'.'

DSO có 2 điểm yếu:

a> Tất cả file được tạo ra từ PHP script sẽ được sở hửu bổi user 'nobody'. Chúng không có khả năng đọc được từ Web. Điều này khá phổ biến với người dùng Wordpress. Nếu họ dùng tính năng upload file thông qua Wordpress interface hay dùng tính năng auto update thì sẽ bị fail với DSO.

b> Về vấn đề bảo mật. Việc tạo file sẽ dưới danh nghĩa người dùng 'nobody'. Nếu một hacker tìm được một lổ hổng trong PHP script, họ có thể thực thi một file cùng một quyền hạn như những file hệ thống mà được đánh dấu sở hữu là 'nobody'. Điều này làm hacker có khả năng chỉnh sửa các file hệ thống khác. Để chống lại điều này thì phải thường xuyên update PHP lên các phiên bản mới nhất.

2.2 CGI

CGI handler sẽ chạy PHP script như một CGI module. Nó vẫn chạy tiến trình PHP dưới danh nghĩa của user 'nobody'. CGI được xem như là một hình thức dự phòng khi DSO không có hiệu lực. Phương pháp này không nhanh cũng không an toàn, dù cho SuExec có được bật hay không.

2.3 SuPHP

SuPHP cũng chạy PHP như CGI module. Nó khác với CGI là khi PHP scripts được gọi từ web Server sẽ được chạy dưới quyền của user sở hữu PHP scripts đó. suPHP thông thường là một handler mặc định và được khuyến cáo bởi cPanel để chạy PHP bởi vì bạn sẽ có thể thấy user nào đang chạy đoạn PHP script.

SuPHP có một điểm lợi là khi bạn sử dụng công cụ upload file lên website của bạn, các file này sẽ được phân đúng quyền hạn của user đó. Upload và một vài tính năng khác của WordPress không hoạt động nếu không sử dụng suPHP hoặc FastCGI

SuPHP cũng cung cấp một lợi thế bảo mật hơn là DSO hay CGI. Tất cả những PHP Scripts không thuộc một user cụ thể nào đó sẽ không thể nào thực thi được hoặc user này sẽ không thể nào thực thi được các PHP Scripts của user khác. Điều này có nghĩa là khi một tài khoản nào đó bị đánh cắp, các scripts cũng không thể nào lây lan sang các tài khoản khác được.

Điểm yếu của suPHP là sử dụng CPU cao. Thêm vào đó, bạn không thể sử dụng Opcode Cache (như xCache) với suPHP. Khi sử dụng suPHP nếu CPU load cao bạn có thể chuyển lại dùng DSO hoặc FastCGI.

2.4 FastCGI

FastCGI là một giải pháp thay thế có hiệu suất cao thay cho CGI. Nó giống suPHP ở chỗ sẽ chạy PHP Script dưới quyền sở hữu PHP Scripts đó. Điểm khác là FastCGI sẽ chạy ít tốn tài nguyên CPU hơn và đạt tốc độ gần bằng DSO. FastCGI sử dụng được opcode cacher như eAccelerator để load web nhanh hơn.

Điểm yếu của FastCGI là sử dụng Ram nhiều. Nếu muốn có tốc độ nhanh và bảo mật tốt ít tốn CPU, ta có thể xem xét sử dụng FastCGI.