当前位置: 首页 > 图文教程 > 网络编程 > PHP > 使用 php4 加速 web 传输

PHP
用PHP实现ODBC数据分页显示一例
用DBSQL类加快开发MySQL数据库程序的速度
多php服务器实现多session并发运行
多核编程中的负载平衡难题
将Oracle内置的安全特性用于php
在PHP中使用ASP.NET AJAX
php中计算时间差的几种方法
PHP 5.0对象模型深度探索之类的静态成员
让PHP管理小型的邮件列表
MagickWand for PHP linux INSTALL 安装
PHP中数组元素升序、降序及重新排序的函数
PHP后门的隐藏技巧测试报告
配置Apache 1.3或者Apache 2.0服务器的5个技巧
用Suhosin加强PHP脚本语言安全性
PHP动态网页编程常用技巧四则
解答:如何使用PHP开发高效的WEB系统
PHP实现上传文件生成小图加文字的实例
PHP实现定时生成HTML网站首页
教你用PHP写MySQL数据库的用户认证系统
加速动态网站 MySQL索引分析和优化

PHP 中的 使用 php4 加速 web 传输


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 42 ::
收藏到网摘: n/a

<?
/***************************************
**Title.........:PHP4HTTPCompressionSpeedsuptheWeb
**Version.......:1.10
**Author........:catoc<[email protected]>
**Filename......:gzdoc.php
**Lastchanged..:25/08/2000
**Requirments...:PHP4>=4.0.1
**PHPwasconfiguredwith--with-zlib[=DIR]
**Notes.........:DynamicContentAccelerationcompresses
**thedatatransmissiondataonthefly
**codebysunjinhu(catoc)<[email protected]>
**Mostnewerbrowserssince1998/1999have
**beenequippedtosupporttheHTTP1.1
**standardknownas"content-encoding."
**Essentiallythebrowserindicatestothe
**serverthatitcanaccept"contentencoding"
**andiftheserveriscapableitwillthen
**compressthedataandtransmitit.The
**browserdecompressesitandthenrenders
**thepage.
**Useage........:
**Nospacebeforethebeginningofthefirst'<?'tag.
**------------Startoffile----------
**|<?
**|include('gzdoc.php');
**|print"Startoutput!!";
**|?>
**|<HTML>
**|...thepage...
**|</HTML>
**|<?
**|gzdocout();
**|?>
**-------------Endoffile-----------
***************************************/
ob_start();
ob_implicit_flush(0);
functionGetHeader(){
$headers=getallheaders();
while(list($header,$value)=each($headers)){
$Message.="$header:$value<br>n";
}
return$Message;
}
functionCheckCanGzip(){
global$HTTP_ACCEPT_ENCODING,$PHP_SELF,$Wget,$REMOTE_ADDR,$S_UserName;
if(connection_timeout()||connection_aborted()){
return0;
}
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-dH:i:s")."n";
$Error_Msg.="Remote-Address:".$REMOTE_ADDR."n";
//mail('[email protected]',"Userhavex-gzipoutputinfile$PHP_SELF!!!",$Error_Msg);
}else{
$ENCODING="gzip";
}
return$ENCODING;
}else{
return0;
}
}
functionGzDocOut(){
global$PHP_SELF,$CatocGz,$REMOTE_ADDR,$S_UserName;
$ENCODING=CheckCanGzip();
if($ENCODING){
print"n<!--Usecompress$ENCODING-->n";
$Contents=ob_get_contents();
ob_end_clean();
if($CatocGz=='Y'){
print"Notcompresslenth:".strlen($Contents)."<BR>";
print"Compressedlenth:".strlen(gzcompress($Contents))."<BR>";
exit;
}else{
header("Content-Encoding:$ENCODING");
}
printpack('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;
printpack('V',$Crc);
printpack('V',$Size);
exit;
}else{
ob_end_flush();
$Error_Msg=str_replace('<br>','',GetHeader());
$Error_Msg.="Time:".date("Y-m-dH:i:s")."n";
$Error_Msg.="Remote-Address:".$REMOTE_ADDR."n";
//mail('[email protected]',"Usercannotusegzipoutputinfile$PHP_SELF!!!",$Error_Msg);
exit;
}
}
?>