PHP4.0 menyediakan kumpulan fungsi buffering keluaran. Dukungan buffering keluaran memungkinkan Anda menulis fungsi yang membungkus fungsi di sekitar buffer terkompresi. Dukungan buffering keluaran di PHP4 memungkinkan informasi header HTML disimpan terlepas dari apakah isi HTML adalah output. Namun di PHP, informasi header ((header(), tipe konten, dan cookie) tidak di-buffer.
Dalam proses penggunaan PHP, tidak dapat dihindari untuk menggunakan header dan
setcookie dua fungsi, kedua fungsi ini akan mengirimkan informasi header file ke browser, tetapi jika ada output apa pun (termasuk output kosong, seperti spasi, pengangkutan kembali, dan umpan baris) sebelum menggunakan kedua fungsi ini, kesalahan akan terjadi diminta, informasi yang cepat adalah sebagai berikut: "Header sudah siap dikirim"! . Beberapa fungsi untuk kontrol buffer telah ditambahkan ke PHP 4.0. Menggunakan fungsi-fungsi ini dapat membantu kita memecahkan banyak masalah.
Nama fungsi Format fungsi Deskripsi fungsi
Flush flush() mengeluarkan isi buffer dan menghapus buffer. Fungsi ini sering digunakan dan sangat efisien.
ob_start void ob_start(void) Buka buffer keluaran. Ketika buffer aktif, semua informasi header non-file dari program PHP tidak dikirim, tetapi disimpan di buffer internal. Untuk mengeluarkan isi buffer, Anda dapat menggunakan ob_end_flush() atau menggunakan ob_end_clean() untuk mengeluarkan isi buffer.
ob_get_contents string ob_get_contents(void) Mengembalikan isi buffer internal. Fungsi ini mengembalikan isi buffer saat ini, atau FALSE jika buffer keluaran tidak aktif.
ob_get_length int ob_get_length(void) Mengembalikan panjang buffer internal. Fungsi ini mengembalikan panjang buffer saat ini seperti ob_get_contents, jika buffer keluaran tidak aktif. Mengembalikan SALAH.
ob_end_flush void ob_end_flush(void) Mengirimkan isi buffer internal ke browser dan menutup buffer output. Fungsi ini mengirimkan isi buffer keluaran (jika ada).
ob_end_clean void ob_end_clean(void) Hapus isi buffer internal dan tutup buffer internal. Fungsi ini tidak menampilkan isi buffer internal!
ob_implicit_flush void ob_implicit_flush ([int flag]) Mengaktifkan atau menonaktifkan flush absolut. Siapa pun yang pernah menggunakan Perl mengetahui arti dari $|=x. String ini dapat membuka/menutup buffer, dan fungsi ob_implicit_flush sama dengan itu defaultnya adalah menutup area buffer, mengaktifkan output absolut.
2. Contoh analisis:
1. Gunakan fungsi kontrol buffer untuk mencegah kesalahan dalam pengiriman informasi di header file.
<? //Permintaan PHP
ob_start(); //Buka buffernya
gema "Selamat datang /n"; //keluaran
header("location:next.php"); //Arahkan browser ke next.php
?>
Jika ob_start dihapus, PHP akan memunculkan kesalahan pada baris 4 file, dan pesan kesalahannya adalah "Header sudah siap dikirim". Namun, jika ob_start ditambahkan, tidak ada kesalahan yang muncul buffer dibuka, kesalahan setelah echo Karakter tidak akan ditampilkan ke browser, tetapi akan tetap berada di buffer server. Karakter tersebut tidak akan ditampilkan sampai Anda menggunakan flush atau ob_end_flush, jadi tidak akan ada kesalahan yang dimiliki header file telah dikeluarkan!
2. Simpan hasilnya (ini adalah penggunaan yang sangat klasik).
Misalkan Anda ingin mengetahui informasi keluaran layar klien, seperti hasil keluaran fungsi, dll., dan informasi keluaran ini akan berbeda tergantung pada klien. Kita bisa menggunakan fungsi <?phpinfo() ?> untuk mendapatkan informasi pengaturan server, tapi bagaimana jika kita ingin menyimpan output dari fungsi phpinfo()? Sebelumnya tidak ada buffer control bisa dikatakan tidak ada jalan sama sekali, namun dengan buffer control kita bisa dengan mudah mengatasinya.
<?
ob_start(); //Buka buffernya
phpinfo(); //Gunakan fungsi phpinfo
$info=ob_get_contents(); //Ambil isi buffer dan tetapkan ke $info
$file=fopen('phpinfo.txt','w'); //Buka file phpinfo.txt
fwrite($file,$info); //Tulis informasi ke phpinfo.txt
fclose($file); //Tutup file phpinfo.txt
?>
Dengan menggunakan metode di atas, Anda dapat menyimpan informasi phpinfo dari pengguna yang berbeda. Ini mungkin tidak dapat dilakukan sebelumnya! Demikian pula, metode buffer dapat digunakan untuk menyimpan tugas-tugas yang sulit diselesaikan dengan metode biasa. Ini sebenarnya adalah metode untuk mengubah beberapa "proses" menjadi "fungsi".