Hướng dẫn what is output buffer in php? - bộ đệm đầu ra trong php là gì?


Bộ đệm đầu ra là một phương pháp để nói với động cơ PHP để giữ dữ liệu đầu ra trước khi gửi nó đến trình duyệt. Như chúng ta biết PHP đã gửi dữ liệu đầu ra đến trình duyệt theo từng mảnh, nhưng nếu chúng ta sử dụng cơ chế đệm đầu ra, dữ liệu đầu ra được lưu trữ trong một biến và được gửi đến trình duyệt dưới dạng một phần ở cuối tập lệnh.

Thí dụ

Hãy trình bày với một ví dụ đơn giản.

& nbsp; bản demo trực tiếp

Đầu ra

string(5) "Hello"
string(20) "HelloTutorials Point"

Giải trình

Trong ví dụ trên ob_get_contents () lấy tất cả các dữ liệu được thu thập kể từ khi chúng tôi gọi là ob_start, tức là mọi thứ trong bộ đệm. Sau đó gửi dữ liệu đầu ra cùng một lúc.

Ưu điểm của bộ đệm đầu ra

  • Bật bộ đệm đầu ra một mình làm giảm lượng thời gian cần thiết để 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 hiện của tập lệnh PHP.
  • Nếu bạn đã từng phải đối mặt với các tin nhắn như "Cảnh báo: Không thể sửa đổi thông tin tiêu đề - các tiêu đề đã được gửi bởi (đầu ra)" trong khi đặt cookie, bạn có thể giải quyết nó bằng bộ đệm đầu ra.

Hướng dẫn what is output buffer in php? - bộ đệm đầu ra trong php là gì?

Cập nhật vào ngày 29 tháng 6 năm 2020 11:23:08

  • Câu hỏi và câu trả lời liên quan
  • Buffing đôi trong Java là gì?
  • Bộ đệm đầu vào trong thiết kế trình biên dịch là gì?
  • Buffering và bộ đệm trong một hệ điều hành xử lý hàng loạt là gì?
  • Luồng đầu ra tiêu chuẩn C ++ (COUT) là gì?
  • Sự khác biệt giữa việc gửi và đệm
  • Loại đầu ra nào được tạo ra bởi hàm unix_timestamp ()?
  • HTML5 Canvas có hỗ trợ bộ đệm kép không?
  • Đặc điểm trong PHP là gì?
  • .Htaccess trong PHP là gì?
  • Đầu ra của MongoDB Profiler: Hoạt động lệnh của lệnh là gì?
  • Sự khác biệt giữa bộ đệm và bộ nhớ đệm trong hệ điều hành
  • Sự khác biệt giữa việc gửi và đệm trong hệ điều hành
  • Phương pháp quá tải trong PHP là gì?
  • Hàm tiêu đề () trong PHP là gì?
  • Hàm bùng nổ () trong PHP là gì?

TL; DR: Bộ đệm đầu ra là một cách để nói với PHP giữ một số dữ liệu trước khi nó được gửi đến trình duyệt. Sau đó, bạn có thể truy xuất dữ liệu và đặt nó vào một biến, thao tác và gửi nó đến trình duyệt sau khi bạn hoàn thành.: Output buffering is a way to tell PHP to hold some data before it is sent to the browser. Then you can retrieve the data and put it in a variable, manipulate it, and send it to the browser once you’re finished.

Umm, đây là một chút ngẫu nhiên?

Đúng nhưng không phải thế! Là một người làm việc với WordPress thường xuyên, bộ đệm đầu ra là một trong những khái niệm mà tôi đã gặp phải trong quá khứ và, cho đến bây giờ, không bao giờ cần phải hiểu. Đó là một ví dụ điển hình về việc học trên cơ sở của người Viking, điều đó, tôi nghĩ rằng hầu hết dân gian web sẽ đồng ý, là một phần cốt lõi của việc tham gia vào ngành của chúng tôi. Đặc biệt khi sử dụng các plugin và khung, chúng tôi liên tục bắt gặp mã nơi chúng tôi tạm dừng và nghĩ rằng, Uh Uh, tôi không biết điều đó làm gì thì đó là điều đó, chúng tôi di chuyển cùng với cuộc sống của mình. Tuy nhiên, đôi khi, chúng ta cần hiểu những gì mà Code Written-by-a-smarter-person-so với tôi, vì bất kỳ lý do gì.

Lỗ nghiên cứu của thỏ này bắt đầu với một câu hỏi tôi nhận được trong hộp thư đến của mình về gỗ, một plugin tôi thích sử dụng khi phát triển các trang web WordPress tùy chỉnh: Tiêu đề làm gì.php và footer.php làm trong một chủ đề gỗ?

Câu trả lời nhanh cho câu hỏi này là họ không làm gì cả; Chúng được yêu cầu cho một số plugin WordPress nhất định. Nhưng tôi đã không biết điều đó! Tôi không bao giờ phải chạm vào các tập tin đó trong thực tiễn phát triển của mình, thật kỳ lạ, vì vậy tôi bắt đầu điều tra. Các đoạn mã chính trong các tệp này là các hàm đệm đầu ra PHP (ob_start, ob_get_contents, v.v.).nothing; they are required for certain WordPress plugins. But I didn’t know that! I’d never had to touch those files in my development practice, oddly enough, so I began to investigate. The main pieces of code in these files were PHP output buffering functions (ob_start, ob_get_contents, etc).

Hãy để Lừa để lại các chi tiết gỗ trong một thời gian khác và đi sâu vào thứ PHP này được gọi là bộ đệm đầu ra.

Bộ đệm đầu ra là gì?

Bộ đệm đầu ra là gì? Hãy để giả vờ bạn, nhà phát triển đã có một cuộc trò chuyện với PHP:

Bạn: Hey Hey, PHP! Don Tiết gửi bất kỳ đầu ra nào cho trình duyệt ngay lập tức, giống như bạn thường làm. Tôi muốn làm một số công cụ lập trình cho nó trước, sau đó tôi sẽ nói với bạn khi nào nên gửi nó.

PHP: Hồi OK, tôi sẽ lưu trữ nó trong một thứ gọi là bộ đệm cho đến khi bạn nói với tôi khi nào nên gửi nó đến trình duyệt.buffer until you tell me when to send it to the browser.”

Bạn: Cảm ơn, PHP! Đừng lo lắng, bạn vẫn còn liên quan.

Nói cách khác, PHP sẽ gửi dữ liệu đến trình duyệt từ máy chủ ngay khi một hàm kết thúc. Ví dụ: nếu mã PHP của bạn là echo "Hi there";, chuỗi Hi Hi đó được gửi đến trình duyệt ngay sau khi chức năng Echo chạy. Tuy nhiên, nếu bạn chạy chức năng Echo đó khi bộ đệm đầu ra có hiệu lực, thì Hi Hi ở đó sẽ được lưu trữ trong ô giữ vô hình này được gọi là bộ đệm và sẽ không hiển thị trên trang cho đến khi bạn truy xuất nội dung của nó và gửi chúng đến Trình duyệt.

* Trong thời đại của JavaScript này, điều này, và điều đó, dường như gần như vô ích khi viết một bài viết chi tiết về sắc thái PHP nhỏ. Nhưng nó không phải! Đối với một, PHP là OG của lập trình cho Web và WordPress, được xây dựng trong PHP, cung cấp năng lượng 25% của web. JavaScript có thể ở đây để ở lại, nhưng PHP không đi đâu cả!

Chức năng

Một vài chức năng bộ đệm đầu ra phổ biến:

ob_start() bật bộ đệm đầu ra. Nói cách khác, nó tạo ra bộ đệm (ô giữ vô hình) sẽ lưu trữ tất cả đầu ra sau khi nó được gọi.

ob_get_contents() lấy tất cả các dữ liệu được thu thập kể từ khi chúng tôi gọi OB_Start, tức là mọi thứ trong bộ đệm. Thông thường, bạn sẽ gán điều này cho một biến.

ob_clean() loại bỏ mọi thứ khỏi bộ đệm đầu ra. Lưu ý rằng nó không xuất hiện bất cứ điều gì.

ob_flush() đầu ra nội dung từ bộ đệm. Lưu ý rằng nó không xóa bộ đệm.

string(5) "Hello"
string(20) "HelloTutorials Point"
0 về cơ bản chạy ob_get_contents(), loại bỏ kết quả và tắt bộ đệm đầu ra.

string(5) "Hello"
string(20) "HelloTutorials Point"
2 Đầu ra nội dung từ bộ đệm và kết thúc bộ đệm đầu ra. Nó không xóa bộ đệm.

Xem một danh sách đầy đủ ở đây.

Một ví dụ

Phần quan trọng nhất của việc sử dụng các chức năng bộ đệm đầu ra là nơi bạn đặt chúng. Bạn cần bắt đầu bộ đệm với ob_start ở đúng vị trí và bạn cần xuất bộ đệm vào trang hoặc vào một biến trước khi bạn làm trống nó.


 


Hi, my name is .

I like .

Nhưng tại sao?

Câu hỏi tuyệt vời; Nó rất có thể bạn sẽ không bao giờ thực sự sử dụng bộ đệm đầu ra trừ khi bạn là nhà phát triển plugin WordPress hoặc viết các ứng dụng PHP tùy chỉnh. Đối với những người trong chúng ta không làm những điều đó, đây là một vài trường hợp mà bí quyết bộ đệm đầu ra có thể có ích, nếu không chỉ cung cấp bối cảnh cho một vấn đề lớn hơn:

Tiêu đề HTTP

Đã bao giờ thấy lỗi này?

string(5) "Hello"
string(20) "HelloTutorials Point"
4

Đối với bất kỳ ai không quen thuộc với định nghĩa của tiêu đề HTTP, các tiêu đề HTTP là thông tin được gửi từ một máy chủ theo yêu cầu HTTP cho trình duyệt biết loại dữ liệu nào sẽ đến trước khi nó đến đó. Các tiêu đề HTTP chứa thông tin như loại nội dung trên đường, ngày được sửa đổi lần cuối, loại máy chủ gửi yêu cầu và nhiều hơn nữa. Bắt là, các tiêu đề cần được gửi trước khi bất kỳ đầu ra hoặc dữ liệu nào khác được gửi từ máy chủ.HTTP header, HTTP headers are information sent from a server upon an HTTP request that tells the browser what kind of data is coming before it gets there. HTTP headers contain information like the type of content on its way, the date it was last modified, the type of server sending the request, and much more. The catch is, headers need to be sent before any output or other data is sent from the server.

Một ví dụ nhanh: Hãy nói rằng ứng dụng của bạn lưu thông tin đăng nhập của người dùng trong cookie. Cookies là một loại tiêu đề HTTP, vì vậy chúng phải được gửi đến trình duyệt trước bất kỳ dữ liệu trang web nào khác. Tùy thuộc vào cách cấu trúc chương trình của bạn, mã cookie có thể không ở đầu tệp của bạn. Bộ đệm đầu ra, theo thuật ngữ đơn giản nhất, cho phép bạn nói, Hey Hey PHP, tôi sẽ cho bạn biết khi nào nên gửi đầu ra trang web thông thường sau khi tôi xử lý cookie và các thứ, nếu không, bạn có thể gặp lỗi tương tự như ở trên .

Lưu ý rằng việc chạy vào lỗi này trong kịch bản trên có thể chỉ ra một số thông lệ xấu về cách thức ứng dụng của bạn được cấu trúc, xung đột với các plugin khác hoặc một cái gì đó khác không có Bueno. Có một sự giải thích tuyệt vời về lỗi này trên Stackoverflow ở đây.

Tóm lại là

Bạn, nhà phát triển phía trước, có thể không bao giờ sử dụng bộ đệm đầu ra.

Nhưng một ngày nào đó, bạn có thể cần phải hiểu nó! Và tôi hy vọng bài viết này sẽ giúp ai đó ở đâu đó trong cuộc phiêu lưu gỡ lỗi của họ.

Tài nguyên

  • Hiểu bộ đệm đầu ra PHP và tại sao nó lại tuyệt vời cho mã ngắn
  • CSS-Tricks đầu ra bộ đệm
  • Bộ đệm nội dung WordPress với PHP

Bộ đệm đầu ra là gì?

Bộ đệm đầu ra là một vị trí trong bộ nhớ hoặc bộ đệm nơi dữ liệu sẵn sàng được nhìn thấy cho đến khi thiết bị hiển thị đã sẵn sàng.Bộ đệm, thuật ngữ bộ nhớ, đầu ra.Máy tính Hope Trang chủ © 2022 Máy tính Hope.a location in memory or cache where data ready to be seen is held until the display device is ready. Buffer, Memory terms, Output. Computer Hope home page© 2022 Computer Hope.

Bộ đệm đầu vào và đầu ra là gì?

Bộ đệm đầu vào/đầu ra (I/O) là một cơ chế cải thiện thông lượng của các hoạt động đầu vào và đầu ra.Nó được triển khai trực tiếp trong phần cứng và trình điều khiển tương ứng (do đó các thiết bị khối được tìm thấy trong các hệ thống giống như UNIX), và cũng có mặt khắp nơi trong các thư viện tiêu chuẩn ngôn ngữ lập trình.a mechanism that improves the throughput of input and output operations. It is implemented directly in hardware and the corresponding drivers (hence the block devices found in Unix-like systems), and is also ubiquitous among programming language standard libraries.

Hàm đầu ra trong PHP là gì?

Các chức năng cơ bản để hiển thị đầu ra trong PHP như sau:..
Print () chức năng ..
Hàm Echo () ..
Chức năng printf () ..
Chức năng Sprintf () ..
Chức năng var_dump () ..
Print_r () hàm ..

OB_START và OB_FLUSH trong PHP là gì?

Đầu ra nội dung của bộ đệm mà không xóa nó: ob_start ();echo "đầu ra này sẽ được gửi đến trình duyệt";ob_flush ();: ob_start(); echo "This output will be sent to the browser"; ob_flush();