使用 php4 加速 web 传输

所属分类: 网络编程 / PHP编程 阅读数: 1011
收藏 0 赞 0 分享
<?
/***************************************
** 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>\n";
}
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")."\n";
$Error_Msg .= "Remote-Address: ".$REMOTE_ADDR."\n";
//mail('your@none.net', "User have x-gzip output 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 "\n<!-- Use compress $ENCODING -->\n";
$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,0x00,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")."\n";
$Error_Msg .= "Remote-Address: ".$REMOTE_ADDR."\n";
//mail('your@none.net', "User can not use gzip output in file $PHP_SELF!!!", $Error_Msg);
exit;
}
}
?>




更多精彩内容其他人还在看

wordpress自定义url参数实现路由功能的代码示例

这篇文章主要介绍了wordpress中实现路由功能的代码示例,大家可以参考用代码实现自己的路由功能
收藏 0 赞 0 分享

使用PHP备份MySQL和网站发送到邮箱实例代码

这篇文章主要介绍了使用PHP备份MySQL和网站发送到邮箱的方法,大家参考使用吧
收藏 0 赞 0 分享

php中{}大括号是什么意思

这篇文章主要介绍了php中大括号{}一些功能,学习php的朋友可以了解下
收藏 0 赞 0 分享

php 模拟 asp.net webFrom 按钮提交事件的思路及代码

这篇文章主要介绍了php模拟asp.net webFrom 按钮提交事件的思路及代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

php实现查看邮件是否已被阅读的方法

当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读,下面有段不错的代码可以实现此需求,喜欢的朋友可以参考下
收藏 0 赞 0 分享

php查找任何页面上的所有链接的方法

php查找页面上的所有链接该怎么实现?使用DOM就可以轻松从任何页面上抓取链接,下面有个不错的示例,感兴趣的朋友可以参考下
收藏 0 赞 0 分享

使用php检测用户当前使用的浏览器是否为IE浏览器

检测用户当前浏览器是否为IE浏览器,在某些情况下是很有必要的,下面有个不错的示例,经测试还不错,需要的朋友可以参考下
收藏 0 赞 0 分享

根据中文裁减字符串函数的php代码

裁减字符串函数有很多,但是根据中文裁减字符串的却很少,在本文将为大家介绍下使用php是如何实现的,感兴趣的朋友不要错过
收藏 0 赞 0 分享

php指定函数参数默认值示例代码

在php编程中,为自定义函数设定默认值,当用户调用该函数时,如果不给参数指定值,参数会用默认值顶替,下面看例子
收藏 0 赞 0 分享

php实现文件下载(支持中文文名)

这个下载实例结合header函数与while fread函数把文件分断读出来然后再发送到客户端了,支持中文文名,算得上一个标准的文件下载实例
收藏 0 赞 0 分享
查看更多