当前位置:编程学习 > php >>

使用php4加速网络传输

答案:    
   来源:catoc
  
   <?
  /***************************************
  ** 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;
  }
  }
  ?>
  
  
  
  
  

上一个:一个用PHP实现的UBB类!
下一个:介绍几个array库的新函数

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,