以上这个例子的用途不是很大,不过很典型$code的本身就是一个含有变量的输出页面,而这个例子用eval把$code中的变量替换,然后对输出结果再进行输出捕捉,再一次的进行处理…… Example 6. 加快传输 PHP代码 复制代码 代码如下: <? /* ** Title.........: PHP4 HTTP Compression Speeds up the Web ** Version.......: 1.20 ** Author........: catoc <[email]catoc@163.net[/email]> ** 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) <[email]catoc@163.net[/email]> ** 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 ([email]jlim@natsoft.com.my[/email]) ** 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; } } ?>