การใช้งานของฟัังก์ชัน Output Buffer - เก็บข้อมูลไว้เพื่อมาเรียกใช้

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Patipat
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 765
ลงทะเบียนเมื่อ: 10/06/2019 10:12 am

การใช้งานของฟัังก์ชัน Output Buffer - เก็บข้อมูลไว้เพื่อมาเรียกใช้

โพสต์โดย Patipat » 20/07/2019 2:24 pm

Output buffer เป็นการใส่ข้อมูลลงใน buffer ก่อนที่จะมีการเรียกใช้ข้อมูล ถ้าไม่ใส่ข้อมูลลงใน Buffer ไม่เช่นนั้น PHP จะทำการส่งข้อมูลทันทีประโชน์ของการใช้งาน Output buffer เช่น สามารถที่จะใช้ Output buffer เก็บข้อมูลที่ query มาจากฐานข้อมูล แล้วเขียนลงใน file ที่สร้างขึ้นมาได้ จริงๆแล้ว ob_start()คือคำสั่งที่ไว้เก็บข้อมูลทั้งหมดที่ต้องแสดงผลไว้ก่อน (มุบมิบนั่นเอง) แล้วจริงแสดงผล หลังจากโหลดเสร็จหรือใช้คำสั่งอื่นๆ ให้มันแสดงผล และหากไม่ใส่คำสั่ง ob_end_clean() ดักไว้ตรงไหนซักแห่ง มันก็จะเก็บไว้ทั้งหน้าเลย พอโหลดเสร็จ จึงแสดงผลออกมา

ฟังก์ชันที่สำคัญที่ใช้ร่วมกันคือ

โค้ด: เลือกทั้งหมด

ob_start()
ob_end_flush()
ob_end_clean()


เราจะมายกตัวอย่างง่าย ๆกันนะครับ
ตัวอย่างแรกจะให้แสดงข้อมูลใน Buffer

โค้ด: เลือกทั้งหมด

<?php
ob_start
();
print(
"Mindphp.com \n");
ob_end_flush() 
?>

จากตัวอย่างเป็นการพิมพ์คำว่า Mindphp.com
จะไม่พิมพ์ในทันทีที่มีคำสั่ง print เมื่อเจอ ob_end_flush() จึงทำการพิมพ์กักการทำงานไว้ใน buffer ก่อน
ผลลัพธ์ก็จะแสดงคำว่า "Mindphp.com"
Selection_999(312).png
Selection_999(312).png (6.1 KiB) เปิดดู 58 ครั้ง



อีกตัวอย่างหนึ่งในการลบ ข้อมูลใน Buffer

โค้ด: เลือกทั้งหมด

<?php
ob_start
();
print(
"Test Mindphp.com \n");
ob_end_clean()
?>

จากตัวอย่างฟังก์ชัน ob_end_clean() จะทำการลบข้อมูลใน buffer ทำให้ไม่มีการพิมพ์ Test Mindphp.com
ผลลัพธ์ ก็จะล้างข้อมูลออกทำให้ ไม่พิมพ์อะไรออกมาเลยครับ
Selection_999(313).png
Selection_999(313).png (4.57 KiB) เปิดดู 58 ครั้ง


สรุป buffer ก็เป็นการเก็บข้อมูล แล้วใช้คำสั่ง ob_end_flush()  แสดงข้อมูลออกมาทั้งหมด ประโชยน์ของ Buffer ก็คือ สำรองเนื้อที่ในหน่วยความจำมาเพื่อรองรับการใช้งานของ object ต่าง ๆ ที่จะเกิดขึ้นกับโปรแกรมเมื่อมีการทำงานเกิดขึ้น

อ้างอิง
1 https://www.php.net/manual/en/function.ob-clean.php
2 http://computer.todaygoods.com/php/outputBuffer.html
3 https://stackoverflow.com/questions/8770910/difference-between-ob-clean-and-ob-flush
If you fall, let you stand. :)

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 13 และ บุคคลทั่วไป 0 ท่าน