Hướng dẫn dùng 1 hpp trong PHP

Nội dung

Nội dung chính

  • II. Danh sách các PHP Handler :
  •  1. CGI :
  •  2. SuPHP :
  •  3. DSO :
  •  4. FastCGI :
  • III. Tổng kết :
  • Cấu trúc sử dụng :
  • Định nghĩa :
  • Kĩ thuật diễn giải :
  • Ví dụ sử dụng hàm in_array()
  • Ví dụ 1 :
  •   Ví dụ 2 :

  • I. PHP handler là gì ?
  • II. Danh sách các PHP Handler :
    •  1. CGI :
    •  2. SuPHP :
    •  3. DSO :
    •  4. FastCGI :
  • III. Tổng kết :

Khi chạy một website 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.

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.

II. Danh sách các PHP Handler :

 1. 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. 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.

 3. 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 :

– 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.

– 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.

 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.

III. Tổng kết :

Như vậy không có handler nào hoàn toàn tốt hơn cái nào. Vì vậy tùy vào nhu cầu sử dụng cũng như tài nguyên của máy chủ mà chúng ta phải lựa chọn cho phù hợp. Hiện tại thì FastCGI đang được dùng khá phổ biến.

Xem thêm các hướng dẫn khác về PHP tại đây

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng :
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Khi lập trình PHP, bạn có nhu cầu : kiểm tra xem giá trị cần tìm có nằm trong một mảng giá trị đã được định nghĩa trước hay không ? Thì bạn sẽ làm như thế nào ? Dễ nhất đó là hãy áp dụng hàm in_array() được hỗ trợ bởi thư viện PHP sẽ giúp bạn làm việc kiểm tra giá trị nằm trong mảng.

Contents

  • Cấu trúc sử dụng :
  • Định nghĩa :
  • Kĩ thuật diễn giải :
  • Ví dụ sử dụng hàm in_array()
    • Ví dụ 1 :
    • Output 1:
    •   Ví dụ 2 :
    • Output 2:

Cấu trúc sử dụng :

in_array(search_value, array_name, type)
Biến sốMiêu tả
search giá trị dữ liệu cần tìm trong mảng.
array tên của mảng đã được định nghĩa
type Nếu giá trị này được set là "TRUE" , thì hàm in_array() sẽ kiểm tra kiểu giá trị dữ liệu cần tìm và tìm giá trị đó trong mảng array. Phải thoả 2 điều kiện phù hợp.

Định nghĩa :

– Hàm in_array() được sử dụng để tìm một giá trị phần tử cụ thể trong một mảng đã được định nghĩa.

Kĩ thuật diễn giải :

– Hàm sẽ trả về giá trị boolean , TRUE nếu giá trị cần tìm được tìm thấy trong mảng array, FALSE nếu giá trị cần tìm không được tìm thấy trong mảng array. Nên thường áp dụng trong sử dụng so sánh if..else..
– Hàm in_array() sử dụng được từ phiên bản PHP 4.x -> trở đi.

Ví dụ sử dụng hàm in_array()

Ví dụ 1 :

– Tìm tên ‘Cường‘ có trong danh sách mảng ‘danhsach‘ đã được định nghĩa từ trước hay chưa.

Output 1:

Tim thay

  Ví dụ 2 :

– Ở ví dụ này chúng ta sẽ đến với phần set giá trị ‘type‘, kiểm tra việc search giá trị cần tìm và kiểu dữ liệu cần tìm đó.

";
	}
	else
	{
		echo "Khong tim thay 23 kieu string
"; } if (in_array(23, $danhsach, TRUE)) { echo "Tim thay 23 kieu integer
"; } else { echo "Khong tim thay 23 kieu integer
"; } ?>

Output 2:

Khong tim thay 23 kieu string
Tim thay 23 kieu integer

 
Cám ơn các bạn đã theo dõi bài viết.