使用 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 相关文章推荐
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
Sep 23 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
PHP实现搜索相似图片
Sep 22 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP 断点续传实例详解
Nov 11 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
PHP正则匹配到2个字符串之间的内容方法
Dec 24 PHP
php使用Swoole实现毫秒级定时任务的方法
Sep 04 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
PHP APC的安装与使用详解
2013/06/13 PHP
PHP中的use关键字概述
2014/07/23 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
在你的网页中嵌入外部网页的方法
2007/04/02 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
Express.JS使用详解
2014/07/17 Javascript
详解JavaScript基于面向对象之继承
2015/12/13 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
微信小程序监听用户登录事件的实现方法
2019/11/11 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python实现堆和索引堆的代码示例
2018/03/19 Python
python中reader的next用法
2018/07/24 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
python django model联合主键的例子
2019/08/06 Python
python3 kubernetes api的使用示例
2021/01/12 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
商场消防管理制度
2014/01/12 职场文书
2014年电教工作总结
2014/12/19 职场文书
初中优秀学生评语
2014/12/29 职场文书
钱学森电影观后感
2015/06/04 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏