Làm cách nào để kích hoạt bộ đệm đầu ra trong PHP ini?

Trong PHP, tính năng đệm đầu ra được sử dụng để kiểm soát đầu ra của chương trình. Việc kiểm soát đầu ra sẽ được thực hiện đối với thời gian gửi đầu ra tới trình duyệt, thứ tự đầu ra, v.v.

Thông thường, mỗi đoạn dữ liệu được chỉ định dưới dạng các câu lệnh in PHP hoặc dưới dạng nội dung HTML ở giữa các tập lệnh PHP sẽ được gửi tới trình duyệt sau khi nó sẵn sàng. Tuy nhiên, bằng cách sử dụng bộ đệm đầu ra PHP, các khối dữ liệu này sẽ được lưu trữ trong bộ đệm

Cấu hình bộ đệm đầu ra PHP

Để kiểm soát đầu ra của chương trình PHP thông qua bộ đệm, chúng ta cần kích hoạt bộ đệm đầu ra bằng cách sử dụng bất kỳ một trong hai phương pháp sau

  • Đặt chỉ thị cấu hình bộ đệm đầu ra PHP
  • Kích hoạt bộ đệm đầu ra bằng các hàm PHP

Đặt chỉ thị cấu hình bộ đệm đầu ra PHP

Có ba chỉ thị cấu hình được sử dụng cho điều khiển đầu ra này. Đó là,

  • output_buffering – Chứa 0 theo mặc định. Chúng ta cần bật nó lên bằng cách đặt “ON” làm giá trị của nó để kích hoạt bộ đệm đầu ra cho tất cả các tập lệnh PHP trong toàn bộ thư mục gốc
  • output_handler – Nó chứa NULL làm giá trị mặc định. Chúng ta cần chỉ định tham chiếu hàm sẵn có của PHP cho lệnh này để gửi đầu ra tới hàm đó
  • implicit_flush – Chuyển lệnh này thành “BẬT”, sẽ làm cho tập lệnh PHP tuôn ra đầu ra sau mỗi câu lệnh in PHP và khối HTML

Đầu tiên, hai lệnh có thể được đặt trong bất kỳ một trong các tệp, php. ini,. htaccess, httpd. conf hoặc người dùng. ban đầu. Và, chỉ thị cấu hình cuối cùng của danh sách trên sẽ được đặt theo bất kỳ cách nào, kể cả với hàm ini_set()

Kích hoạt kiểm soát bộ đệm đầu ra bằng các hàm PHP

Bằng cách đặt các lệnh trên với các tệp cấu hình PHP, sẽ ảnh hưởng đến tất cả các tập lệnh PHP. Tuy nhiên, việc kích hoạt bộ đệm đầu ra PHP trên cơ sở cần thiết sẽ tốt hơn cho cấu hình toàn cầu này

Vì vậy, PHP bao gồm các hàm PHP để kiểm soát bộ đệm đầu ra. Chúng được liệt kê dưới đây với mô tả ngắn của họ

  • ob_start() – Điều này tạo ra một bộ đệm mới để lưu trữ từng đoạn dữ liệu. Các khối dữ liệu này sẽ được cung cấp trong tập lệnh PHP bằng cách sử dụng các câu lệnh in hoặc ở dạng nội dung HTML
  • ob_flush(), ob_end_flush() – Các chức năng này được sử dụng để xóa bộ đệm đầu ra để hiển thị đầu ra cho trình duyệt. Những cái này khác nhau ở chỗ ob_flush() không phá hủy bộ đệm sau khi xả và cái kia sẽ làm. Sau khi ob_end_flush(), chúng ta cần tạo lại bộ đệm mới, nếu cần
  • ob_clean(), ob_end_clean() – Các chức năng này được sử dụng để xóa dữ liệu được đệm. Và, ob_end_clean() sẽ hủy bộ đệm sau khi xóa nội dung của nó

Ví dụ về bộ đệm đầu ra PHP

Bằng cách sử dụng các chức năng chính ở trên của bộ đệm đầu ra PHP, chúng ta sẽ xem một chương trình ví dụ

";
ob_end_flush();

ob_start();
print "PHP Output Buffering: level-2
"; ob_flush(); print "Store into recently created buffer on level-2
"; ob_end_flush(); ?>

Trong chương trình PHP ở trên, chúng tôi đã tạo một bộ đệm bằng cách sử dụng ob_start() trong dòng đầu tiên. Và sau đó, dữ liệu được chỉ định với câu lệnh in PHP được lưu trữ trong bộ đệm này. Và, một hàm khác ob_end_flush() được gọi để xóa dữ liệu trong bộ đệm và hủy bộ đệm sau đó

Và sau đó, một lần nữa ob_start() được gọi để tạo bộ đệm mới chứa đầy dữ liệu in. Nhưng, lần này, PHP ob_flush được sử dụng thay vì ob_end_flush(). Vì vậy, nó sẽ chỉ xóa dữ liệu được lưu trong bộ đệm vào màn hình của người dùng và không phá hủy bộ đệm

Vì vậy, câu lệnh in thứ ba sẽ lưu trữ dữ liệu trong bộ đệm được tạo gần đây

Chức năng kiểm soát bộ đệm đầu ra

Ngoài danh sách các chức năng chính ở trên, PHP hỗ trợ một số chức năng trong phần mở rộng này. Chúng được sử dụng để đối phó với danh sách các chức năng sau đây

  • Đọc dữ liệu từ bộ đệm đầu ra
  • xếp chồng bộ đệm đầu ra
  • Nén dữ liệu đệm
  • viết lại URL

Bây giờ, chúng ta hãy xem tất cả các hàm PHP bằng cách phân loại chúng theo danh sách các chức năng đệm đầu ra ở trên

Đọc dữ liệu từ bộ đệm đầu ra

Sử dụng chức năng bộ đệm đầu ra PHP, chúng ta có thể nhận được các chi tiết như nội dung của bộ đệm, độ dài của dữ liệu được đệm, v.v.

  • ob_get_contents () - Hàm này trả về nội dung bộ đệm đầu ra
  • ob_get_length() - Hàm này được sử dụng để lấy độ dài của bộ đệm
  • ob_get_level() - Nó được sử dụng để lấy bộ đệm đầu ra mức
  • ob_get_status() - Nó được sử dụng để lấy thông tin trạng thái mảng cho bộ đệm cấp cao nhất hoặc cho tất cả các mức bộ đệm đầu ra
  • ob_get_flush() — Hàm này tạo hiệu ứng kết hợp của cả ob_get_contents() và ob_end_flush()
  • ob_get_clean() — Tương tự, đây sẽ là sự kết hợp của ob_get_contents() và ob_end_flush()

Bộ đệm đầu ra xếp chồng

Chúng ta có thể lấy ví dụ trước để tìm hiểu cách chuyển các bộ đệm tiếp theo thành một ngăn xếp. Nếu chúng ta tạo bộ đệm sau đó bằng cách gọi ob_start(), thì mỗi bộ đệm mới được tạo sẽ được đẩy lên ngăn xếp trên đầu bộ đệm đầu ra trước đó. Ví dụ,

";

ob_start();
print "PHP Output Buffering: level-2
"; ob_end_flush(); ?>

Nén dữ liệu đệm

Trong PHP, dữ liệu đầu ra được đệm sẽ được nén bằng cách chỉ định ob_gzhandler làm đối số của hàm ob_start(). ob_gzhandler() là một hàm PHP dựng sẵn, được sử dụng làm hàm gọi lại. Với sự trợ giúp của cuộc gọi lại này, PHP trả về dữ liệu nén cho trình duyệt

Mặc dù phải mất một thời gian để nén dữ liệu đầu ra, nhưng thời gian trình duyệt tải xuống dữ liệu nén sẽ giảm xuống

Viết lại URL

Có thêm hai chức năng kiểm soát bộ đệm đầu ra PHP khi làm việc với viết lại URL. Đó là,

Làm cách nào để đặt bộ đệm đầu ra trong PHP?

Bạn có thể bật tính năng đệm đầu ra cho tất cả các tệp bằng cách đặt lệnh này thành 'Bật' . Nếu bạn muốn giới hạn kích thước của bộ đệm ở một kích thước nhất định - bạn có thể sử dụng số byte tối đa thay vì 'Bật', làm giá trị cho chỉ thị này (e. g. , output_buffering=4096). Lệnh này luôn Tắt trong PHP-CLI.

Tại sao sử dụng bộ đệm đầu ra trong PHP?

Chỉ bật tính năng đệm đầu ra giảm lượng thời gian tải xuống và hiển thị HTML của chúng tôi trong trình duyệt . Do đó, nó làm giảm thời gian thực thi của tập lệnh PHP.

Làm cách nào để tắt bộ đệm đầu ra trong PHP Joomla?

Làm cách nào để tắt tính năng đệm đầu ra của Joomla? .
Điều hướng đến phần Quản trị Trang web của trang web Joomla của bạn
Chọn tab Tùy chọn
Trong tiêu đề Đầu ra, bỏ chọn hộp bên cạnh Bộ đệm đầu ra
Nhấp vào Lưu thay đổi
Trang web Joomla của bạn bây giờ sẽ xuất tất cả nội dung trực tiếp ra màn hình mà không cần bất kỳ bộ đệm nào

Giới hạn của bộ đệm đầu ra trong PHP là gì?

Khi kích thước bộ đệm vượt quá 4096 byte , PHP sẽ tự động thực thi flush , nghĩa là. bộ đệm được làm trống và gửi đi. Điều tương tự cũng có thể đạt được bằng cách đặt lệnh output_buffering , lệnh này bị bỏ qua trong CLI.