?> 详细后果你可以到这里看看http://www.php2000.com/~uchinaboy/out.php
PHP2000的最新的PHP聊天室就是用的这个手艺,惋惜的是源代码未公然 L
注:假如在法式的首部到场ob_implicit_flush()翻开相对刷新,就能够在法式中不再利用flush(),如许做的优点是:进步效力!
2. 关于ob系列函数:
我想先援用我的好伴侣y10k的一个例子:
Example 3.
好比你用失掉办事器和客户真个设相信息,然而这个信息会由于客户真个分歧而分歧,假如想要保留phpinfo()函数的输入怎样办呢?在没有缓冲区掌握之前,可以说一点举措也没有,然而有了缓冲区的掌握,咱们可以轻松的处理:
?> 以上这个例子的用处不是很大,不外很典范$code的自己就是一个含有变量的输入页面,而这个例子用eval把$code中的变量交换,然后对输入了局再停止输入捕获,再一次的停止处置……
Example 6. 加速传输
<?php
/*
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.20
** Author........: catoc <catoc@163.net>
** Filename......: gzdoc.php
** Last changed..: 18/10/2000
** Requirments...: PHP4 >= 4.0.1
** PHP was configured with --with-zlib[=DIR]
** Notes.........: Dynamic Content Acceleration compresses
** the data transmission data on the fly
** code by sun jin hu (catoc) <catoc@163.net>
** Most newer browsers since 1998/1999 have
** been equipped to support the HTTP 1.1
** standard known as "content-encoding."
** Essentially the browser indicates to the
** server that it can accept "content encoding"
** and if the server is capable it will then
** compress the data and transmit it. The
** browser decompresses it and then renders
** the page.
**
** Modified by John Lim (jlim@natsoft.com.my)
** based on ideas by Sandy McArthur, Jr
** Usage........:
** No space before the beginning of the first '<?' tag.
** ------------Start of file----------
** |<?
** | include('gzdoc.php');
** |? >
** |<HTML>
** |... the page ...
** |</HTML>
** |<?
** | gzdocout();
** |? >
** -------------End of file-----------
*/
ob_start();
ob_implicit_flush(0);
function CheckCanGzip() {
global $HTTP_ACCEPT_ENCODING;
if (headers_sent() || connection_timeout() || connection_aborted()) {
return 0;
}
if (strpos($HTTP_ACCEPT_ENCODING, 'x-gzip') !== false) return "x-gzip";
if (strpos($HTTP_ACCEPT_ENCODING, 'gzip') !== false) return "gzip";
return 0;
}
/* $level = compression level 0-9, 0=none, 9=max */
function GzDocOut($level = 1, $debug = 0) {
$ENCODING = CheckCanGzip();
if ($ENCODING) {
print "n<!-- Use compress $ENCODING -->n";
$Contents = ob_get_contents();
ob_end_clean();
if ($debug) {
$s = "<p>Not compress length: " . strlen($Contents);
$s .= "Compressed length: " . strlen(gzcompress($Contents, $level));
$Contents .= $s;
}
header("Content-Encoding: $ENCODING");
print "x1fx8bx08x00x00x00x00x00";
$Size = strlen($Contents);
$Crc = crc32($Contents);
$Contents = gzcompress($Contents, $level);
$Contents = substr($Contents, 0, strlen($Contents) - 4);
print $Contents;
print pack('V', $Crc);
print pack('V', $Size);
exit;
} else {
ob_end_flush();
exit;
}
}