使用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程序中的常见漏洞进行攻击(上)
Oct 09 PHP
解决MySQL中文输出变成问号的问题
Jun 05 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
php中count获取多维数组长度的方法
Nov 03 PHP
Laravel 5框架学习之表单
Apr 08 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 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
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
javascript测试题练习代码
2012/10/10 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python 有效的括号的实现代码示例
2019/11/11 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
python自动提取文本中的时间(包含中文日期)
2020/08/31 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
数组越界问题
2015/10/21 面试题
实现向右循环移位
2014/07/31 面试题
linux面试题参考答案(3)
2012/09/13 面试题
Java语言的优势
2015/01/10 面试题
家长会标语
2014/06/24 职场文书
上班离岗检讨书
2014/09/10 职场文书
学生打架检讨书
2014/10/20 职场文书
党建工作汇报材料
2014/12/24 职场文书
与死神共舞观后感
2015/06/15 职场文书
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python