使用php4加速网络传输


Posted in PHP onOctober 09, 2006

标 题: 使用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;
        }
}
?>

PHP 相关文章推荐
用Flash图形化数据(一)
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
php模板引擎技术简单实现
Mar 15 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 PHP
与数据库连接
Oct 09 #PHP
PHP新手上路(八)
Oct 09 #PHP
网络资源
Oct 09 #PHP
PHP中的正规表达式(一)
Oct 09 #PHP
PHP中的正规表达式(二)
Oct 09 #PHP
smtp邮件发送一例
Oct 09 #PHP
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
Oct 09 #PHP
You might like
php读取xml实例代码
2010/01/28 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
2016/02/03 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
js中的数组Array定义与sort方法使用示例
2013/08/29 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
深入理解python中的atexit模块
2017/03/07 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
行政管理人员精品工作推荐信
2013/11/04 职场文书
简单租房协议书范本
2014/08/20 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
领导干部考核评语
2015/01/04 职场文书
论文答谢词
2015/01/20 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
2015年项目工作总结
2015/04/29 职场文书
张丽莉观后感
2015/06/16 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python