使用 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 相关文章推荐
简单易用的计数器(数据库)
Oct 09 PHP
PHP新手上路(四)
Oct 09 PHP
PHP 工厂模式使用方法
May 18 PHP
discuz的php防止sql注入函数
Jan 17 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP动态页生成静态页的3种常用方法
Nov 13 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 PHP
如何在PHP中读写文件
Sep 07 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
zend api扩展的php对象的autoload工具
2011/04/18 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
php类自动加载器实现方法
2015/07/28 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
限制文本字节数js代码
2007/03/06 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
javascript Array数组对象的扩展函数代码
2010/05/22 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
angular将html代码输出为内容的实例
2018/09/30 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
Python实现句子翻译功能
2017/11/14 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
通过python爬虫赚钱的方法
2019/01/29 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
软件工程师岗位职责
2013/11/16 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
师德师风剖析材料
2014/09/30 职场文书
违反单位工作制度检讨书
2014/10/25 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
2021/05/25 Python