学院首页>网络编程>PHP>使用php4加速网络传输

使用php4加速网络传输

作者: 来源:不详 添加时间:2006-5-25 20:47:31
  标 题: 使用php4加速网络传输。

<?
/***************************************
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.10
** Author........: catoc <catoc@163.net>
** Filename......: gzdoc.php
** Last changed..: 25/08/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.
** Useage........:
**  No space before the beginning of the first '<?' tag
.
**  ------------Start of file----------
**  |<?
**  | include('gzdoc.php');
**  | print "Start output !!";
**  |?>
**  |<HTML>
**  |... the page ...
**  |</HTML>
**  |<?
**  | gzdocout();
**  |?>
**  -------------End of file-----------
***************************************/
ob_start();
ob_implicit_flush(0);
function GetHeader(){
  $headers = getallheaders();
  while (list($header, $value) = each($headers)) {
 $Message .= "$header: $value<br> ";
  }
  return $Message;
}
function CheckCanGzip(){
  global $HTTP_ACCEPT_ENCODING, $PHP_SELF, $Wget, $REMOTE_ADDR,  
$S_UserName;
  if (connection_timeout() || connection_aborted()){
 return 0;
  }
  if ((strpos('catoc'.$HTTP_ACCEPT_ENCODING, 'gzip')) || $Wget =
= 'Y'){
 if (strpos('catoc'.$HTTP_ACCEPT_ENCODING, 'x-gzip')){

$ENCODING = "x-gzip";
$Error_Msg = str_replace('<br>','',GetHeader()
);
$Error_Msg .= "Time: ".date("Y-m-d H:i:s")."
";
$Error_Msg .= "Remote-Address: ".$REMOTE_ADDR.
" ";
//mail('your@none.net', "User have x-gzip outp
ut in file $PHP_SELF!!!", $Error_Msg);
 }else{
$ENCODING = "gzip";
 }
 return $ENCODING;
  }else{
 return 0;
  }
}
function GzDocOut(){
  global $PHP_SELF, $CatocGz, $REMOTE_ADDR, $S_UserName;
  $ENCODING = CheckCanGzip();
  if ($ENCODING){
 print " <!-- Use compress $ENCODING --> ";
 $Contents = ob_get_contents();
 ob_end_clean();
 if ($CatocGz == 'Y'){
print "Not compress lenth: ".strlen($Contents)
."<BR>";
print "Compressed lenth: ".strlen(gzcompress($
Contents))."<BR>";
exit;
 }else{
header("Content-Encoding: $ENCODING");
 }
 print pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x
00,0x00);
 $Size = strlen($Contents);
 $Crc = crc32($Contents);
 $Contents = gzcompress($Contents);
 $Contents = substr($Contents, 0, strlen($Contents) - 4
);
 print $Contents;
 print pack('V',$Crc);
 print pack('V',$Size);
 exit;
  }else{
 ob_end_flush();
 $Error_Msg = str_replace('<br>','',GetHeader());
 $Error_Msg .= "Time: ".date("Y-m-d H:i:s")." ";
 $Error_Msg .= "Remote-Address: ".$REMOTE_ADDR." ";
 //mail('your@none.net', "User can not use gzip output  
in file $PHP_SELF!!!", $Error_Msg);
 exit;
  }
}
?>





 
站内搜索