Thử dùng preload mới ra lò trong PHP version 7.4

Tram Ho

Preload là gì.

Chào các bạn, nếu các bạn là một PHP developer giống như mình thì chắc là các bạn sẽ biết là php vừa release version 7.4 với một số tính năng mới. Preload là một tính năng mới được thêm vào PHP version 7.4, Một tính năng được cho là sẽ cải thiện đang kể hiệu suất cho app PHP của bạn.

Preload hoạt động như sau:

  1. Chúng ta phải custom một file script để chỉ định các file chúng ta muốn preload.
  2. Script chúng ta vừa custom ở trên sẽ được thực hiện khi service PHP khởi động.
  3. Tất cả các file đã preload sẽ được lưu trữ trên RAM và sử dụng để xử lý các request tới.
  4. Khi bạn thay đổi một file đã được preload thì thay đổi đó sẽ không được apply cho đến khi bạn restart lại service PHP.

Ví dụ về preload

Cài đặt php7.4-fpm và nginx: Các bạn tham khảo tại đây
Config php7.4-fpm: Mở file /etc/php/7.4/fpm/php.ini và sữa lại các config sau:

Config nginx: Edit lại nội dung file /etc/nginx/sites-enabled/default thành:

Tạo thư mục chứa code muốn preload: Trong ví dụ nào tôi tạo một thư mục có tên php74 trong thư mục /etc/www/. Trong thư mục php74 có cấu trúc như sau:

Nội dung của các file như sau:

Tại đây nếu bạn reload nginx và truy cập từ trình duyệt thì sẽ nhận được lỗi “B does not know the class”
Edit lại nội dung file preload.php thành:

Tiếp theo chúng ta reload lại service php7.4-fpm và nginx. Truy cập vào http://localhost sẽ nhận được kết quả là:

Sau khi restart php7.4-fpm, theo chỉ định trong file preload.php thì các thư mục php74 sẽ được load vào RAM và sẽ được thực thi khi có request tới.
Nhưng file đã được preload load thì khi bạn edit lại thì những thay đổi mới sẽ không được apply cho đến khi bạn khởi động lại service php7.4-fpm.
Bây giờ chúng ta hãy thử thay đổi nội dung file A.php thành

Sau đó reload lại browser thì trình duyệt vẫn hiện là ‘Hello PHP 7.4’ => những thay đỏi của ta trong file A.php chưa được apply.
Nếu bay giờ chúng ta restart lại php7.4-fpm thì những thay đỗi của chúng ta sẽ được apply.

Performance

Như đã nói ở phần đầu, việc sự dụng preload sẽ giúp cải thiện hiệu suất của app một cách đáng kể. Bạn có thể tham khảo kết quả benchmarks khi dùng preload của Ben Morel tại đây
Theo chia sẽ của Ben Morel , bạn có thể quyết định chỉ tải trước “hot class” – các lớp thường được sử dụng trong codebase của bạn. Điểm chuẩn của Ben Morel cho thấy rằng chỉ tải khoảng 100 hot class, thực sự mang lại hiệu suất tốt hơn so với tải trước mọi thứ. Việc preload tất cả các class chỉ làm tăng hiệu suất thêm 13%, trong khi việc preoad các hot class thì hiệu suất tăng thêm17%.

Như vậy qua bài viết mình đã giới thiệu và ví dụ về preload trong PHP version 7.4, mong là bài viết của mình mang lại thông tin hữu ích với các bạn.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo