使用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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
用PHP函数解决SQL injection
Dec 09 PHP
开源SNS系统-ThinkSNS
May 18 PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 PHP
php XMLWriter类的简单示例代码(RSS输出)
Sep 30 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
Mar 14 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
关于Iframe如何跨域访问Cookie和Session的解决方法
2013/04/15 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
经典的带阴影的可拖动的浮动层
2006/06/26 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
js文字横向滚动特效
2015/11/11 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
js排序与重组的实例讲解
2017/08/28 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
在ubuntu16.04中将python3设置为默认的命令写法
2018/10/31 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
Pycharm如何导入python文件及解决报错问题
2020/05/10 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
模范教师事迹材料
2014/02/10 职场文书
夫妻房产协议书的格式
2014/10/11 职场文书
高三语文教学反思
2016/02/16 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
MySQL系列之三 基础篇
2021/07/02 MySQL
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android