使用 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写的采集程序
Mar 16 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
php数组查找函数总结
Nov 18 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
php分享朋友圈的实现代码
Feb 18 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
YII框架模块化处理操作示例
Apr 26 PHP
php生成微信红包数组的方法
Sep 05 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
PHP重载基础知识回顾
Sep 10 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实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP实现分页的一个示例
2006/10/09 PHP
PHP $_FILES函数详解
2011/03/09 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
PHP命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
php给图片加文字水印
2015/07/31 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
js+ajax实现获取文件大小的方法
2015/12/08 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
Python聊天室实例程序分享
2016/01/05 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python 安装移动复制第三方库操作
2020/07/13 Python
英文版餐饮业求职信
2013/10/18 职场文书
求职信范文英文版
2014/01/05 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
护士节慰问信
2015/02/15 职场文书
民事上诉状范文
2015/05/22 职场文书
创业计划书之美甲店
2019/09/20 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL