使用 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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
mysql 全文搜索 技巧
Apr 27 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
Oct 27 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
YII Framework教程之异常处理详解
Mar 14 PHP
Laravel中Trait的用法实例详解
Mar 16 PHP
PHP基础之输出缓冲区基本概念、原理分析
Jun 19 PHP
PHP mkdir创建文件夹实现方法解析
Nov 13 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
php 验证码制作(网树注释思想)
2009/07/20 PHP
php备份数据库类分享
2015/04/14 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
Python中使用logging模块打印log日志详解
2015/04/05 Python
python 循环while和for in简单实例
2016/08/16 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
咨询公司各岗位职责
2013/12/02 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python