使用php4加速网络传输
2018-09-07 13:39
标 题: 使用php4加速网络传输。
<?
/***************************************
** Title.........: PHP4 HTTP Compression Speeds up the Web
** Version.......: 1.10
** 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生成随机数的方法总结
下一篇:数据库相关问题