使用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 相关文章推荐
使用php计算排列组合的方法
Nov 13 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
Dec 29 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
PHP PDO操作MySQL基础教程
Jun 05 PHP
PHP利用Socket获取网站的SSL证书与公钥
Jun 18 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
laravel 解决Validator使用中出现的问题
Oct 25 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
zf框架的registry(注册表)使用示例
2014/03/13 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
php将服务端的文件读出来显示在web页面实例
2016/10/31 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
Js基础学习资料
2010/11/23 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Python+Wordpress制作小说站
2017/04/14 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Python处理session的方法整理
2019/08/29 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
2021/02/04 Python
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
高二地理教学反思
2014/01/24 职场文书
布达拉宫导游词
2015/02/02 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书