使用 php4 加速 web 传输


Posted in PHP onOctober 09, 2006

<?
/***************************************
** 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;
}
}
?>

PHP 相关文章推荐
Content-type 的说明
Oct 09 PHP
与数据库连接
Oct 09 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
基于php缓存的详解
May 15 PHP
php实现计数器方法小结
Jan 05 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
浅谈PHP正则中的捕获组与非捕获组
Jul 18 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 PHP
Ubuntu 16.04下安装PHP 7过程详解
Mar 28 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
php 中include()与require()的对比
Oct 09 #PHP
php生成WAP页面
Oct 09 #PHP
让你同时上传 1000 个文件 (一)
Oct 09 #PHP
让你同时上传 1000 个文件 (二)
Oct 09 #PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 #PHP
利用static实现表格的颜色隔行显示
Oct 09 #PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 #PHP
You might like
解析php开发中的中文编码问题
2013/08/08 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
编写兼容IE和FireFox的脚本
2009/05/18 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
一行命令搞定node.js 版本升级
2014/07/20 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
javascript实现左右控制无缝滚动
2014/12/31 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
python3的输入方式及多组输入方法
2018/10/17 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
鲜果饮品店创业计划书
2014/01/21 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
班子四风对照检查材料
2014/08/21 职场文书
预备党员自我评价范文
2015/03/04 职场文书