浏览器缓冲输出

问题
希望在发送首部或cookie之前就开始生成输出。
解决方案
在页面最上面调用ob_start(),另外在最下面调用ob_end_flush()。这样一来,生成输出的命令和发送首部的命令就可以混杂在一起。调用ob_end_flush()之前不会发送输出。
// ob_start();
I haven't decided if I want to send a cookie yet.
// setcookie('hereon','great blue');
Yes, sending that cookie was the righit decision.
// on_end_flush();

可以向ob_start()传入一个回调函数名,用这个函数处理输出缓冲区。这对于完成页面中所有内容的后处理很有用,如对搜集地址的机器人程序隐藏email地址。例如:
// function mangle_email($s){
// return preg_replace('/([^@\s]+)@([-a-z0-9]+.)+[a-z]{2,}/is',<$1@...>,$s);
// }
//ob_start('mangle_email');
I would not like spam sent to ronald@example.com!
//ob_end_fush();

output_buffering配置指令会打开所有页面的输出缓冲:
output_buffering = 0n
类似地,output_handler会设置一个用于所有页面的输出缓冲区处理回调:
output_handler=mangle_email

设置一个output_handler回调会自动将output_buffering设置为on。

posted @ 2025-01-12 01:58  kksllss  阅读(7)  评论(0)    收藏  举报