OPCache là gì?

OPCache là một hệ thống caching (lưu các nội dụng trong bộ nhớ để dùng lại) nhằm tăng tốc độ website chạy bằng PHP. Với OPcache trong PHP là lưu trữ mã máy là các đoạn code PHP sau khi được biên dịch, nó lưu trong bộ nhớ chia sẻ đọc lại được giữa các truy vấn.

Bằng cách lưu trữ như vậy, các PHP Script (code PHP) không cần thiết phải biên dịch lại cho mỗi truy nhập - mã nó thi hành ngay mã đã biên dịch đọc được từ bộ nhớ. Điều này làm cho Website chạy PHP có tốc độ cải thiện rất nhiều, giảm tải đáng kể cho Server.

Từ PHP 5.5 mặc định đã có OPCache (là một extension của PHP) bạn chỉ việc kích hoạt và cấu hình để sử dụng. Có những hệ thống PHP (như tự biện dịch, phiên bản cũ) có thể thiếu OPCache, thì bạn cài vào bằng lệnh pecl

Bạn nên biết, sau khi website PHP của bạn hoàn thành viết code, để server thực thi code đó, nó sẽ phải đọc các file PHP, biên dịch thành mã máy rồi thi hành. Đọc và biên dịch mã nguồn PHP xảy ra cho mọi truy vấn, dẫn tới nhiều vấn đề về hiệu năng của website. Khi OPcache được kích hoạt việc biên dịch chỉ xảy ra lần đầu hoặc khi code php được cập nhật mới.

Cách thức OPCache hoạt động

Khi một đoạn code PHP (file .php) được yêu cầu thi hành , nó cần được đọc để phân tích cú pháp, biên dịch thành mã máy, từ đó mã máy được thực thi. Nếu OPCache hoạt động thì quá trình này diễn ra như sau: Tìm trong bộ nhớ xem có lưu trữ file PHP đã biên dịch

  1. Nếu chưa có, thì biên dịch mã nguồn - kết quả lưu vào bộ nhớ chia sẻ, sau đó chạy code
  2. Nếu đã có, chạy code luôn (chú ý nếu đã có nhưng file PHP đã cập nhật mới thì nó cũng sẽ biên dịch lại)

Cài đặt OpCache PHP

Mặc định OpCache là một extension có sẵn, bạn chỉ việc kích hoặt nó, để kích hoặt bạn thêm vào php.ini

zend_extension=opcache.so
opcache.enable = 1

Nếu đã kích hoạt thành công thì hàm phpinfo() có chứa thông tin như dưới

phpinfo opcache

Nếu chạy từ dòng lệnh xem version php thì kết quả

php -v
php version opcache

Nếu OpCache không kích hoạt được do thiếu extension này thì cài thêm vào bằng lệnh

pecl install opcache

Cấu hình OpCache

Các tham số thiết lập OpCache bạn viết trong file php.ini, chú ý nếu sử dụng PHP-FPM sau khi cập nhật php.ini bạn cần khởi động lại PHP-FPM

systemctl restart php-fpm

Ví dụ đây là một cấu hình viết trong php.ini:

opcache.enable_cli = 1

Một số cấu hình bạn có thể thiết lập (đầy đủ tại opcache configuration)

opcache.enable Giá trị "1" kích hoặt OpCache, "0" tắt
opcache.interned_strings_buffer=8 Tổng bộ nhớ (MB) lưu trữ các chuỗi khác nhau
opcache.max_accelerated_files=2000 Tổng số file php có thể biên dịch và lưu trữ trong OPCache
opcache.memory_consumption=64 Tổng số file php có thể biên dịch và lưu trữ trong OPCache
opcache.memory_consumption=128 Bộ nhớ (MB) dùng bởi OPCache
opcache.revalidate_freq=10 Khoảng thời gian (giây) kiểm tra xem file PHP có cập nhật code mới không

OPcache GUI

Có một PHP Script tạo ra giao diện GUI để bạn dễ theo dõi các thiết lập, reset lại cache ... Bạn tải file PHP này về, và chạy để dễ quản lý OPcache OPcache GUI

OpcacheGui

OPcache trong code PHP

Nếu OPcache kích hoạt, thì trong code PHP bạn được cung cấp một số phương thức như để xem tình trạng opcache, kiểm tra một file PHP có nằm trong OpCache không, hoặc để reset lại toàn bộ cache. Tất nhiên những phương thức này thông thường bạn không cần sử dụng

  • opcache_compile_file(string $filename): bool yêu cầu biên dịch một file PHP và đưa vào OpCache
  • opcache_get_configuration(): array|false lấy mảng chứa các cấu hình đang thiết lập
  • opcache_get_status(): array|false lấy mảng chứa trang thái Opcache, như bộ nhớ, số file ...
  • opcache_reset() - reset để cache lại tất cả
  • opcache_is_script_cached(string $filename): bool - Kiểm tra một file có nằm trong OPCache

Đăng ký nhận bài viết mới