Tại sao PHP lại chậm? Vậy có những cách nào để tối ưu PHP?

Một thời gian làm việc trên PHP mình nhận thấy rằng về phương diện sử dụng là rất tốt và dễ dàng sử dụng viết sau cũng chạy kiểu dữ liệu tự do nhưng về perfomance thì thật sự chưa tốt. Chính vì thế sau một thời gian sử dụng sẽ thấy perfomance giảm rõ rệt, tuy nhiên ta cũng có một số cách để cải thiện vấn đề này.

Tại sao PHP lại chậm?

Để trả lời vấn đề này ta sẽ quay lại cơ chế hoạt động cơ bản của ngôn ngữ server này. PHP là ứng dụng execute từ PHP script sang ngôn ngữ máy (Assembly -> mã nhị phân) để xử lý mà trước khi đến execute thì phải qua bộ core của PHP để parse PHP script và compiler nửa chính vì qua nhiều bước để đến execute nên nếu quá nhiều xử lý thì sẽ rất chậm với lại web hiện nay thì lượng truy cập tăng rất nhanh nên chậm là điều khó tránh khỏi.

Zend Engine Internal structure

Vậy có những cách nào để tối ưu PHP?

1. Dùng kết hợp Cache OpCode (APC Cache) và Cache data (Memcached, Redis,…)

Cache Opcode điển hình là APC Cache, Opcache. Nó là cache file được tạo ra và lưu trên ổ đĩa, sau khi compile xong hiểu nôm na là thay thế 2 bước (Parse + Compile) thay vì phải qua 3 bước nặng nề để chuyển PHP thành ngôn ngữ máy để chạy thì mình chỉ tốn 2 bước nhẹ nhàn lấy cache ra chuyển thành ngôn ngữ máy để chạy. Nên tốc độ sẽ nhanh hơn đến 50%.

Image result for apc cache

Cache data điển hình là Memche, memched, redis,… Nó là cache data được lưu trên Ram (bộ nhớ tạm) sau khi truy vấn đến Database. Nếu ai dùng PHP với database thì sẽ hiểu.

2. Dùng HHVM

HHVM được viết tắt từ “HipHop Virtual Machine” là một nền tảng xử lý PHP (tương tự như PHP-FPM) được phát triển bởi Facebook. HHVM giúp tăng tốc PHP nhờ sử dụng máy xử lý ảo dựa trên trình biên dịch just-in-time (JIT).

Cơ chế hoạt động của HHVM khác nhiều so với PHP-FPM.

Theo cơ chế của PHP-FPM (VM):

Parsing toàn bộ PHP script khủng lồ -> Compile toàn bộ PHP script đã parse -> Execute toàn bộ PHP script đã compile

=> Vì phải xử lý lượng lớn script nên tốc độ khá ì chờ xử lý lớn.

Theo cơ chết JIT trong HHVM:

Parsing từng PHP script nhỏ -> Compile từng PHP script đã parse -> Execute từng PHP script đã compile.

=> Vì xử lý lượng script nhỏ nên tốc độ nhanh.

Tuy nhiên ở PHP7 thì PHP7-FPM đã có nhiều cải tiến theo cơ chế HHVM nên tốc độ khá nhanh.

3. Dùng framework Yaf Framework hoặc Phalcon PHP Framework

Yaf Framework hoặc Phalcon là PHP Framework được viết bằng ngôn ngữ lập trình C, sau đó được biên dịch thành một PHP extension(thành phần mở rộng cho PHP).

Tổng kết

Từ các cách tối ưu trên bạn có thể phối hợp tất cả lại với nhau để tối ưu từ một hệ thống nền PHP tồi tàn chậm chạp trở nên nhanh như tia chóp.

Sliding Sidebar

About Me

About Me

Hello, my name is Dũng (Johnny). Welcome to my blog.

As I’m a developer, I write about topics related to the field of programming, mainly from a technical point of view. On this blog you’ll find posts which encourage discussion, information about development trends, case studies, reviews, tutorials, tips on how to improve your effectiveness, and anything else that might be fascinating to people from the IT industry.
I love PHP, NodeJS, Java,... and Fullstack.