Output Buffering เป็นวิธีสั่งให้ PHP Engine เก็บข้อมูลเอาต์พุทไว้ก่อน ส่งไปให้เบราว์เซอร์ทีเดียวจบในท้ายสคริปต์ ปกติ PHP ส่งเอาต์พุทเป็นชิ้นๆ แต่ถ้าใช้ Output Buffering ข้อมูลจะถูกเก็บในตัวแปรและส่งครั้งเดียว
ตัวอย่าง
<?php ob_start(); echo "Hello"; $ob1 = ob_get_contents(); echo "Tutorials Point"; $ob2 = ob_get_contents(); ob_end_clean(); var_dump($ob1, $ob2); ?>
ผลลัพธ์
string(5) "Hello" string(20) "HelloTutorials Point"
คำอธิบาย
ob_get_contents() ดึงข้อมูลทั้งหมดในบัฟเฟอร์ตั้งแต่ ob_start() ถึงจุดที่เรียก หลังจากนั้นส่งข้อมูลเอาต์พุทครั้งเดียว
ข้อดีของ Output Buffering
- เปิด Output Buffering ลดเวลาดาวน์โหลดและเรนเดอร์ HTML ในเบราว์เซอร์ ทำให้สคริปต์ PHP ทำงานเร็วขึ้น
- แก้ปัญหา "Warning: Cannot modify header information - headers already sent" เมื่อตั้งคุกกี้หรือ redirect ได้