Rumah pembangunan bahagian belakang tutorial php PHP中对缓冲区的统制实现代码

PHP中对缓冲区的统制实现代码

Jun 13, 2016 am 11:38 AM
info void

PHP中对缓冲区的控制实现代码

大家在使用PHP的过程中不免要使用到header和setcookie两个函数,这两个函数会发送一段文件头信息给浏览器,但是如果在使用这两个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错,提示信息如下:“Header had all ready send by”!那有什么方法可以在有了输出的情况下面在发送文件头信息呢?在PHP 4.0里面加入了缓冲区控制的几个函数,使用这些函数可以帮我们解决很多问题。

一、 相关函数简介:

1、Flush:输出缓冲区内的内容并且删除缓冲区。

函数格式:flush()

说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区

函数格式:void ob_start(void)

说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或者使用ob_end_clean()来输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。

使用方法:string ob_get_contents(void)

说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。

使用方法:int ob_get_length(void)

说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。

使用方法:void ob_end_flush(void)

说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区

使用方法:void ob_end_clean(void)

说明:这个函数不会输出内部缓冲区的内容!

7、ob_implicit_flush:打开或关闭绝对刷新

使用方法:void ob_implicit_flush ([int flag])

说明:使用过Perl的人都知道?$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出。

二、使用例子:

在一开始,笔者说了用缓冲区控制的函数可以防止文件头发送信息出错,下面就是一个例子:

?

.代码如下:

//PHP提示符
ob_start(); //打开缓冲区
echo "Hello/n"; //输出
header('location:gotourl.php'); //把浏览器重定向到gotourl.php
?>

?

如果去掉ob_start,PHP就会提示在文件的第4行出错(出错信息如前面所示),但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

下面再给出一个很经典的用途:

比如你用得到服务器和客户端的设置信息,但是这个信息会因为客户端的不同而不同,如果想要保存phpinfo()函数的输出怎么办呢?在没有缓冲区控制之前,可以说一点办法也没有,但是有了缓冲区的控制,我们可以轻松的解决:

?

.代码如下:


ob_start(); //打开缓冲区
phpinfo(); //使用phpinfo函数
?$info=ob_get_contents(); //得到缓冲区的内容并且赋值给?$info
?$file=fopen('info.txt','w'); //打开文件info.txt
fwrite(?$file,?$info); //写入信息到info.txt
fclose(?$file); //关闭文件info.txt
?>

?


用以上的方法,就可以把不同用户的phpinfo信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些“过程”转化为“函数”的方法!


另:验证码生成的图像,在将图像输出到浏览器里,要清除下缓存区
????????//清除缓存区
??????? ob_clean();
??????? //设置文件头;?
??????? Header("Content-type: image/PNG");

??????? //以PNG格式将图像输出到浏览器或文件;
??????? ImagePNG($distortion_im);

??????? //销毁一图像,释放与image关联的内存;
??????? ImageDestroy($distortion_im);
??????? ImageDestroy($im);

?

来源:http://www.poluoluo.com/jzxy/201309/243650.html

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah maksud void dalam java Apakah maksud void dalam java Mar 01, 2023 pm 07:19 PM

Dalam Java, void bermaksud "kosong", iaitu, "tidak mengembalikan apa-apa". void sepadan dengan kelas pembalut "java.lang.Void".

Apakah kepentingan menggunakan nilai pulangan jenis void dalam PHP? Apakah kepentingan menggunakan nilai pulangan jenis void dalam PHP? Apr 10, 2024 pm 09:21 PM

Dalam PHP, nilai pulangan jenis void bermakna fungsi itu tidak mengembalikan sebarang nilai, dan biasanya digunakan untuk operasi seperti mengemas kini rekod yang tidak memerlukan nilai pulangan. Gunakan kata kunci void apabila mengisytiharkan fungsi void apabila memanggil fungsi void, hasilnya tidak boleh diberikan kepada pembolehubah. Kes praktikal: nilai pulangan jenis void boleh digunakan untuk mengemas kini rekod pangkalan data tanpa mengembalikan sebarang maklumat.

Fungsi kata kunci void dalam bahasa C Fungsi kata kunci void dalam bahasa C Feb 19, 2024 pm 11:33 PM

void dalam C ialah kata kunci khas yang digunakan untuk mewakili jenis kosong, yang bermaksud data tanpa jenis tertentu. Dalam bahasa C, void biasanya digunakan dalam tiga aspek berikut. Jenis pulangan fungsi adalah tidak sah Dalam bahasa C, fungsi boleh mempunyai jenis pulangan yang berbeza, seperti int, float, char, dll. Walau bagaimanapun, jika fungsi tidak mengembalikan sebarang nilai, jenis pulangan boleh ditetapkan kepada batal. Ini bermakna bahawa selepas fungsi itu dilaksanakan, ia tidak mengembalikan nilai tertentu. Contohnya: voidhelloWorld()

Bagaimana untuk memahami dan menyelesaikan masalah 'javascript:void(O)'. Bagaimana untuk memahami dan menyelesaikan masalah 'javascript:void(O)'. Feb 19, 2024 pm 05:35 PM

Apakah maksud javascript:void(0)? Apakah penyelesaian kepada masalah ini? Apabila kami menyemak imbas web, kadangkala kami menemui beberapa pautan yang tidak bertindak balas selepas mengklik, tetapi dipaparkan sebagai "javascript:void(0)" dalam bar alamat penyemak imbas. Soalan ini mungkin mengelirukan sesetengah pelawat web kerana mereka tidak tahu maksud mesej ralat, yang kelihatan seperti kod JavaScript. Jadi, mari kita bongkar ini bersama-sama

Bagaimanakah fungsi C++ mengembalikan jenis kekosongan? Bagaimanakah fungsi C++ mengembalikan jenis kekosongan? Apr 20, 2024 pm 01:06 PM

Fungsi void dalam C++ tidak mengembalikan sebarang nilai, dan sintaksnya ialah voidfunction_name(). Kegunaan biasa termasuk: Memasukkan input pengguna, seperti mendapatkan umur pengguna dan mencetaknya ke konsol.

Bagaimana untuk menyelesaikan javascriptvoid(o) Bagaimana untuk menyelesaikan javascriptvoid(o) Nov 23, 2023 am 11:02 AM

Penyelesaian kepada javascriptvoid(o): 1. Semak ralat sintaks 2. Pastikan persekitaran pelaksanaan yang betul 3. Semak konflik dengan kod lain 5. Gunakan kaedah pengikatan lain; 7. Gunakan alat debugging; Menyelesaikan ralat javascriptvoid(0) memerlukan pemeriksaan teliti kod, persekitaran pelaksanaan dan kebergantungan yang berkaitan.

Peranan tidak sah dalam bahasa c Peranan tidak sah dalam bahasa c Apr 03, 2025 pm 04:12 PM

Dalam bahasa C, tidak sah adalah kata kunci yang menunjukkan tiada nilai pulangan. Ia digunakan dalam pelbagai senario, seperti: fungsi yang mengisytiharkan tiada nilai pulangan: void print_message (); fungsi yang mengisytiharkan tiada parameter: tidak sah print_message (tidak sah); Fungsi yang mentakrifkan tiada nilai pulangan: void print_message () {printf (& amp; quot; hello world \ n & amp; quot;); } Fungsi yang mentakrifkan tiada parameter: void print_message (void) {printf (& amp; quot; neraka

Bagaimana untuk mematikan maklumat output maklumat dalam thinkphp5 Bagaimana untuk mematikan maklumat output maklumat dalam thinkphp5 Jun 03, 2023 am 11:49 AM

1. Fungsi info Sebelum kita mula menutup info, kita perlu memahami fungsinya. Dalam rangka kerja ThinkPHP5, terdapat tiga bentuk utama output maklumat maklumat: memaparkan URL yang diakses pada masa ini dan parameter permintaan memaparkan maklumat penyahpepijatan seperti pelaksanaan pernyataan SQL dan masa berjalan halaman semasa di bahagian bawah halaman; maklumat apabila ralat pelaksanaan berlaku, yang mudah Walaupun penyahpepijatan kelihatan berguna, kebanyakan maklumat maklumat tidak begitu membantu pembangun sebenar. Selalunya apa yang kita perlukan ialah keluaran yang lebih ringkas supaya kita boleh lebih fokus pada pembangunan. 2. Maklumat penutup adalah sangat mudah. ​​Anda hanya perlu mengkonfigurasi

See all articles