您的位置:

phppcache的简单介绍

本文目录一览:

安装wordpress使用tengine怎么样

后台之前使用的Tengine+HHVM环境, 前段时间更新了 HHVM 之后,感觉访问 Blog 的速度慢了很多,不知道是不是与使用的某些插件不兼容的原因,正好 Aliyun 添加了 Ubuntu14.04镜像,趁这次更新系统的机会,重新采用Tengine+PHP-FPM的架构来运行 Wordpress.下面记录一下安装的过程.

备份好数据之后,在 Aliyun 后台更新系统盘,选择 Ubuntu 14.04这个镜像.

完成之后,登录到服务器.

先进行一些系统参数的优化设置.

#Synchronization timerm -rf /etc/localtimeln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeapt-get install -y ntpdatentpdate -u pool.ntp.orgdate#Disable SeLinuxif [ -s /etc/selinux/config ]; thensed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configfiif [ -s /etc/ld.so.conf.d/libc6-xen.conf ]; thensed -i 's/hwcap 1 nosegneg/hwcap 0 nosegneg/g' /etc/ld.so.conf.d/libc6-xen.conffi#set sysctl\cp /etc/sysctl.conf /etc/sysctl.conf.baksed -i 's/net\.ipv4\.tcp_syncookies.*/net\.ipv4\.tcp_syncookies = 1/' /etc/sysctl.confif cat /etc/sysctl.conf | grep "aliyun web add" /dev/null ;thenecho ""elsecat /etc/sysctl.conf /dev/null;then echo ""else echo "* soft nofile 65535" /etc/security/limits.conffiif cat /etc/security/limits.conf | grep "* hard nofile 65535" /dev/null ;then echo ""else echo "* hard nofile 65535" /etc/security/limits.conffi

然后更新系统,安装必要的系统组件.

apt-get updateapt-get autoremove -yapt-get -fy installapt-get install -y build-essential gcc g++ makefor packages in build-essential gcc g++ make cmake automake autoconf re2c wget cron bzip2 libzip-dev libperl-dev libc6-dev iptables file libaio* rcconf flex vim nano bison m4 gawk less make cpp binutils diffutils unzip tar bzip2 unrar p7zip libncurses5-dev libncurses5 libncurses5-dev libncurses5-dev libtool libevent-dev libpcre3 libpcre3-dev libpcrecpp0 zlibc openssl libsasl2-dev libltdl3-dev libltdl-dev libmcrypt-dev zlib1g zlib1g-dev libbz2-1.0 libbz2-dev libglib2.0-0 libglib2.0-dev libpng3 libjpeg62 libjpeg62-dev libpng-dev libpng12-0 libpng12-dev curl libcurl3 libmhash2 libmhash-dev libpq-dev libpq5 gettext libncurses5-dev libjpeg-dev libxml2-dev libfreetype6 libfreetype6-dev libssl-dev libcurl3 libcurl4-openssl-dev libcurl4-gnutls-dev mcrypt libcap-dev diffutils ca-certificates debian-keyring debian-archive-keyring;do apt-get install -y $packages --force-yes;apt-get -fy install;apt-get -y autoremove; done

接着下载Tengine并编译安装,我使用的是截至到当前的最新版本2.0.3.

wget -c zxf tengine-2.0.3.tar.gzcd tengine-2.0.3./configure --prefix=/usr/local/nginx \--user=www-data \--group=www-data \--with-http_stub_status_module \--without-http-cache \--with-http_ssl_module \--with-http_gzip_static_module \--with-http_concat_module CPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)if [ $CPU_NUM -gt 1 ];then make -j$CPU_NUMelse makefimake install

Tengine安装过程还是很快的,用不了几分钟,就安装完成.接着下载一个 Tengine 的控制脚本,用于使用 service nginx start/stop/reload 等操作,并添加nginx 开机启动.

wget -O /etc/init.d/nginxchmod +x /etc/init.d/nginxservice nginx status # to poll for current statussudo update-rc.d -f nginx defaults

至此,Tengine已经安装结束,使用 service nginx start启动Tengine之后,使用浏览器访问网站就可以看到相关的 Welcome 界面了.接下来我们开始安装 PHP.同样,我使用的也是当前的最新版本,PHP 5.5.17.

wget -c zxf php-5.5.17.tar.gzcd php-5.5.17./configure --prefix=/usr/local/php \--with-config-file-path=/usr/local/php/etc \--enable-fpm \--with-fpm-user=www-data \--with-fpm-group=www-data \--with-mysql=mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--enable-opcache \--enable-static \--enable-inline-optimization \--enable-sockets \--enable-wddx \--enable-zip \--enable-calendar \--enable-bcmath \--enable-soap \--with-zlib \--with-iconv \--with-gd \--with-xmlrpc \--enable-mbstring \--with-curl \--enable-ftp \--with-mcrypt \--disable-ipv6 \--disable-debug \--with-openssl \--disable-maintainer-zts \--disable-fileinfoCPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)echo "make php"if [ $CPU_NUM -gt 1 ];then make ZEND_EXTRA_LIBS='-liconv' -j$CPU_NUMelse make ZEND_EXTRA_LIBS='-liconv'fimake install

PHP的编译时间比Tengine要长一些,耐心等待 PHP 编译安装完全之后,需要进入一些软链接操作.同时对 php.ini 和 php-fpm.conf 进行一些优化设置.

ln -s /usr/local/php/bin/php /usr/bin/phpln -s /usr/local/php/bin/phpize /usr/bin/phpizeln -s /usr/local/php/sbin/php-fpm /usr/bin/php-fpmmkdir -p /usr/local/php/etccp php.ini-production /usr/local/php/etc/php.inised -i 's@expose_php = On@expose_php = Off@g' /usr/local/php/etc/php.inised -i 's/post_max_size = 8M/post_max_size = 50M/g' /usr/local/php/etc/php.inised -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /usr/local/php/etc/php.inised -i 's/;date.timezone =/date.timezone = PRC/g' /usr/local/php/etc/php.inised -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/php/etc/php.inised -i 's/; cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.inised -i 's/; cgi.fix_pathinfo=0/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.inised -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.inised -i 's/max_execution_time = 30/max_execution_time = 300/g' /usr/local/php/etc/php.inised -i 's/register_long_arrays = On/;register_long_arrays = On/g' /usr/local/php/etc/php.inised -i 's/magic_quotes_gpc = On/;magic_quotes_gpc = On/g' /usr/local/php/etc/php.inised -i 's/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsockopen/g' /usr/local/php/etc/php.ini#enable opcachesed -i '/;opcache.enable=0/i\zend_extension=opcache.so' /usr/local/php/etc/php.inised -i 's/;opcache.enable=0/opcache.enable=1/g' /usr/local/php/etc/php.inised -i 's/;opcache.enable_cli=0/opcache.enable_cli=1/g' /usr/local/php/etc/php.inised -i 's/;opcache.memory_consumption=64/opcache.memory_consumption=128/g' /usr/local/php/etc/php.inised -i 's/;opcache.interned_strings_buffer=4/opcache.interned_strings_buffer=8/g' /usr/local/php/etc/php.inised -i 's/;pcache.max_accelerated_files=2000/pcache.max_accelerated_files=4000/g' /usr/local/php/etc/php.inised -i 's/;opcache.revalidate_freq=2/opcache.revalidate_freq=60/g' /usr/local/php/etc/php.inised -i 's/;opcache.fast_shutdown=0/opcache.fast_shutdown=1/g' /usr/local/php/etc/php.inicat /usr/local/php/etc/php-fpm.confEOF[global]pid = /usr/local/php/var/run/php-fpm.piderror_log = /usr/local/php/var/log/php-fpm.loglog_level = notice[www]listen = /var/run/php5-fpm.socklisten.backlog = -1listen.allowed_clients = 127.0.0.1listen.owner = www-datalisten.group = www-datalisten.mode = 0666user = www-datagroup = www-datapm = dynamicpm.max_children = 10pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 6request_terminate_timeout = 100request_slowlog_timeout = 0slowlog = var/log/slow.logEOFcp ./php-5.5.17/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpmchmod +x /etc/init.d/php-fpm

最后,挂载备份的数据盘.从备份盘恢复网站数据,并修改 Nginx 的配置,恢复网站的正常访问.

mkdir -p /backupecho '/dev/xvdb1 /backup ext4 barrier=0 0 0' /etc/fstab mount -a

我已经将上面的过程编写成了一个脚本,可下载后查看(install.zip),也可以直接下载到服务器运行.完成之后,只需要添加 vhost的配置reload 一下 nginx 就可以正常访问了.

需要说明的是由于我使用了阿里云的 RDS,所以没有在服务器上安装 MySql.

如何关闭PHP缓存

header("Cache-Control: no-cache, must-revalidate"); //禁止页面缓存

set cache = false;//如何关闭PHP缓存

PHP中cache-control的no-cache是什么意思,有什么作用。言简意赅。

no-cache

必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌 (ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被更改,可以避免下载。

;ref=wisessid=0from=7300001auid=0pu=sz%401320_480%2Ccuid%40luSCi0upH80yuSaR_uHZugia2aj7uHaK0iStijaM2iKWL5SlB%2Ccua%40_avLCgaH-i46ywoUfpw1z4adXi45a2iLA%2Ccut%400fStNJtN2i4faXiDzuDs8gIVQRlYkSO6A%2Cosname%40baiduboxapp%2Cctv%402%2Ccfrom%401001187r%2Ccen%40cuid_cua_cut%2Ccsrc%40app_mainbox_txt%2Cta%40zbios_2_5.0_6_5.0%2Cusm%402%2Cvmgdb%400020100228ybd_page_type=1baiduid=A32D22DBFA75863948456F48E2B0F986tj=Xv_1_0_10_title

PHP做图标,pChart怎么用啊?图在哪里输出?

pChart是一个开源的图表生成库,主要涉及3个Class: pChart.class , pData.class , pCache.class ,可生成20多种简单或复杂的图表,支持PNG,JPG,GIF通用图片格式。数据源可以来自于Database,CSV,当然也可以手写。使用该程序PHP需要开启GD服务,先来看看p

pChart是一个开源的图表生成库,主要涉及3个Class:, , ,可生成20多种简单或复杂的图表,支持PNG,JPG,GIF通用图片格式。数据源可以来自于Database,CSV,当然也可以手写。使用该程序PHP需要开启GD服务,先来看看pChart的工作流程:

主要分为三步:

* 读取用于生成图表数据(数据库、文件)

* 设计图表样式(圆角、底色等)

* 制作标签、题目、图例并生成图表

下面看一个简单的柱状图表:

代码如下:

?php // Standard inclusionsinclude("pChart/pData.class");

 include("pChart/pChart.class");

 // Dataset definition $DataSet = newpData;

 //图表数据 $DataSet-AddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4),"Serie1");

 $DataSet-AddPoint(array(3,3,-4,1,-2,2,1,0,-1,6,3),"Serie2");

 $DataSet-AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3");

 $DataSet-AddAllSeries();

 $DataSet-SetAbsciseLabelSerie();

 //数据图例 $DataSet-SetSerieName("Microsoft","Serie1");

 $DataSet-SetSerieName("IBM","Serie2");

 $DataSet-SetSerieName("Google","Serie3");

 // Initialise the graph $Test = newpChart(700,230);

 //设置图表尺寸、样式 $Test-setFontProperties("Fonts/tahoma.ttf",8);

 $Test-setGraphArea(50,30,680,200);

 $Test-drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);

 $Test-drawRoundedRectangle(5,5,695,225,5,230,230,230);

 $Test-drawGraphArea(255,255,255,TRUE);

 $Test-drawScale($DataSet-GetData(),$DataSet-GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);

 $Test-drawGrid(4,TRUE,230,230,230,50);

 // Draw the 0 line $Test-setFontProperties("Fonts/MankSans.ttf",6);

 $Test-drawTreshold(0,143,55,72,TRUE,TRUE);

 // Draw the bar graph //柱状图要使用drawBarGraph() $Test-drawBarGraph($DataSet-GetData(),$DataSet-GetDataDescription(),TRUE,80);

 // Finish the graph //制作图例、标题、字体等属性 $Test-setFontProperties("Fonts/MankSans.ttf",10);

 $Test-drawLegend(596,150,$DataSet-GetDataDescription(),255,255,255);

 $Test-setFontProperties("Fonts/MankSans.ttf",10);

 $Test-drawTitle(50,22,"Example",50,50,50,585);

 

 //生成图表 $imageFile ="example12.png";

 $Test-Render($imageFile);

 echo 'img src="'.$imageFile.'"'

php中getcache的用法

PHP的getcache是 读取缓存文件的函数

比如常见的当前站点类别,是保存在缓存文件中的,读取的时候用:

$this-categorys = getcache(‘category_content_’.$this-siteid,’commons’);

具体实例:

?php

$iterator = new ArrayIterator(array(1, 2, 3));

$cache    = new CachingIterator($iterator, CachingIterator::FULL_CACHE);

$cache-next();

$cache-next();

var_dump($cache-getCache());

$cache-next();

var_dump($cache-getCache());

?

以上例程会输出:

array(2) {

 [0]=

 int(1)

 [1]=

 int(2)

}

array(3) {

 [0]=

 int(1)

 [1]=

 int(2)

 [2]=

 int(3)

}

php网站如何更新缓存

每个程序使用的缓存,可能都不一样,你最好找程序作者问一下

PHP 输出缓存详解

作者: 字体:[增加 减小] 类型:转载

Output Control

函数可以让你自由控制脚本中数据的输出。它非常地有用,特别是对于:当你想在数据已经输出后,再输出文件头的情况。

输出控制函数不对使用 header() 或 setcookie(),

发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用。

我们先举一个简单的例子,让大家对Output

Control有一个大致的印象:

Example 1.

复制代码

代码如下:

?php

ob_start(); //打开缓冲区

echo

\"Hellon\"; //输出

header(“location:index.php”); //把浏览器重定向到index.php

ob_end_flush();//输出全部内容到浏览器

?

所有对header()函数有了解的人都知道,这个函数会发送一段文件头给浏览器,但是如果在使用这个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错。如果我们去掉第一行的ob_start(),再执行此程序,我们会发现得到了一条错误提示:“Header

had all ready send

by”!但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用

flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

一、 相关函数简介:

1、Flush:刷新缓冲区的内容,输出。

函数格式:flush()

说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区

函数格式:void ob_start(void)

说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。

使用方法:string

ob_get_contents(void)

说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。

使用方法:int

ob_get_length(void)

说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回

FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。

使用方法:void ob_end_flush(void)

说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区

使用方法:void

ob_end_clean(void)

说明:这个函数不会输出内部缓冲区的内容而是把它删除!

7、ob_implicit_flush:打开或关闭绝对刷新

使用方法:void

ob_implicit_flush ([int flag])

说明:使用过Perl的人都知道$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用

flush()

二、深入了解:

1. 关于Flush函数:

这个函数在PHP3中就出现了,是一个效率很高的函数,他有一个非常有用的功能就是刷新browser的cache.我们举一个运行效果非常明显的例子来说明flush.

Example 2.

复制代码

代码如下:

?php

for($i = 1; $i = 300; $i++

) print(“ “);

// 这一句话非常关键,cache的结构使得它的内容只有达到一定的大小才能从浏览器里输出

//

换言之,如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的。经

//

过测试,我发现这个大小的底限是256个字符长。这意味着cache以后接收的内容都会

// 源源不断的被发送出去。

For($j = 1; $j

= 20; $j++) {

echo $j.”

”;

flush();

//这一部会使cache新增的内容被挤出去,显示到浏览器上

sleep(1); //让程序“睡”一秒钟,会让你把效果看得更清楚

}

?

具体效果你可以到这里看看

PHP2000的最新的PHP聊天室就是用的这个技术,可惜的是源代码未公开 L

注:如果在程序的首部加入ob_implicit_flush()打开绝对刷新,就可以在程序中不再使用flush(),这样做的好处是:提高效率!

2. 关于ob系列函数:

我想先引用我的好朋友y10k的一个例子:

Example 3.

比如你用得到服务器和客户端的设置信息,但是这个信息会因为客户端的不同而不同,如果想要保存phpinfo()函数的输出怎么办呢?在没有缓冲区控制之前,可以说一点办法也没有,但是有了缓冲区的控制,我们可以轻松的解决:

复制代码

代码如下:

?php

ob_start(); //打开缓冲区

phpinfo(); //使用phpinfo函数

$info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info

$file=fopen(\'info.txt\',\'w\'); //打开文件info.txt

fwrite($file,$info);

//写入信息到info.txt

fclose($file); //关闭文件info.txt

?

用以上的方法,就可以把不同用户的phpinfo信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些“过程”转化为“函数”的方法!

或许有人会问:“难道就这个样子吗?还有没有其他用途?”当然有了,比如笔者论坛的PHP

语法加亮显示就和这个有关(PHP默认的语法加亮显示函数会直接输出,不能保存结果,如果在每次调用都显示恐怕会很浪费CPU,笔者的论坛就把语法加亮函数显示的结果用控制缓冲区的方法保留了),大家如果感兴趣的话可以来看看!

可能现在大家对ob_start()的功能有了一定的了解,上面的一个例子看似简单,但实际上已经掌握了使用ob_start()的要点。

1.使用ob_start打开browser的cache,这样可以保证cache的内容在你调用flush(),ob_end_flush()(或程序执行完毕)之前不会被输出。

2.现在的你应该知道你所拥有的优势:可以在任何输出内容后面使用header,setcookie以及session,这是

ob_start一个很大的特点;也可以使用ob_start的参数,在cache被写入后,然后自动运行命令,比如

ob_start(\"ob_gzhandler\");而我们最常用的做法是用ob_get_contents()得到cache中的内容,然后再进行处理……

3.当处理完毕后,我们可以使用各种方法输出,flush(),ob_end_flush(),以及等到程序执行完毕后的自动输出。当然,如果你用的是ob_get_contents(),那么就要你自己控制输出方式了。

来,让我们看看能用ob系列函数做些什么……

一、 静态模版技术

简介:所谓静态模版技术就是通过某种方式,使得用户在client端得到的是由PHP产生的html页面。如果这个html页面不会再被更新,那么当另外的用户再次浏览此页面时,程序将不会再调用PHP以及相关的数据库,对于某些信息量比较大的网站,例如sina,163,sohu。类似这种的技术带来的好处是非常巨大的。

我所知道的实现静态输出的有两种办法:

1.通过y10k修改的phplib的一个叫template.inc.php类实现。

2.使用ob系列函数实现。

对于第一种方法,因为不是这篇文章所要研究的问题,所以不再赘述。

我们现在来看一看第二种方法的具体实现:

Example 4.

?php

ob_start();//打开缓冲区

?

php页面的全部输出

?

$content =

ob_get_contents();//取得php页面输出的全部内容

$fp = fopen(“output00001.html”, “w”);

//创建一个文件,并打开,准备写入

fwrite($fp, $content);

//把php页面的内容全部写入output00001.html,然后……

fclose($fp);

?

这样,所谓的静态模版就很容易的被实现了……

二、 捕捉输出

以上的Example

4.是一种最简单的情况,你还可以在写入前对$content进行操作……

你可以设法捕捉一些关键字,然后去对它进行再处理,比如Example

3.所述的PHP语法高亮显示。个人认为,这个功能是此函数最大的精华所在,它可以解决各种各样的问题,但需要你有足够的想象力……

Example 5.

?

Function run_code($code) {

If($code) {

ob_start();

eval($code);

$contents = ob_get_contents();

ob_end_clean();

}else {

echo “错误!没有输出”;

exit();

}

return $contents;

}

以上这个例子的用途不是很大,不过很典型$code的本身就是一个含有变量的输出页面,而这个例子用eval把$code中的变量替换,然后对输出结果再进行输出捕捉,再一次的进行处理……

Example 6. 加快传输

?

/*

** Title.........: PHP4 HTTP

Compression Speeds up the Web

** Version.......: 1.20

** Author........:

catoc catoc@163.net

** Filename......: gzdoc.php

** Last

changed..: 18/10/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.

**

** Modified

by John Lim (jlim@natsoft.com.my)

** based on ideas by Sandy McArthur, Jr

** Usage........:

** No space before the beginning of the first

\'?\' tag.

** ------------Start of file----------

** |?

** |

include(\'gzdoc.php\');

** |?

** |HTML

** |... the page

...

** |/HTML

** |?

** | gzdocout();

** |?

** -------------End of file-----------

*/

ob_start();

ob_implicit_flush(0);

function CheckCanGzip(){

global

$HTTP_ACCEPT_ENCODING;

if (headers_sent() || connection_timeout() ||

connection_aborted()){

return 0;

}

if (strpos($HTTP_ACCEPT_ENCODING,

\'x-gzip\') !== false) return \"x-gzip\";

if

(strpos($HTTP_ACCEPT_ENCODING,\'gzip\') !== false) return \"gzip\";

return

0;

}

/* $level = compression level 0-9, 0=none, 9=max */

function

GzDocOut($level=1,$debug=0){

$ENCODING = CheckCanGzip();

if ($ENCODING){

print \"n!-- Use compress $ENCODING --n\";

$Contents =

ob_get_contents();

ob_end_clean();

if ($debug){

$s = \"pNot

compress length: \".strlen($Contents);

$s .= \"

Compressed length:

\".strlen(gzcompress($Contents,$level));

$Contents .= $s;

}

header(\"Content-Encoding: $ENCODING\");

print

\"x1fx8bx08x00x00x00x00x00\";

$Size = strlen($Contents);

$Crc =

crc32($Contents);

$Contents = gzcompress($Contents,$level);

$Contents =

substr($Contents, 0, strlen($Contents) - 4);

print $Contents;

print

pack(\'V\',$Crc);

print pack(\'V\',$Size);

exit;

}else{

ob_end_flush();

exit;

}

}

?

这是catoc的一段很早以前的代码,是在weblogs.com看到的,他利用了zlib的函数,对传输的内容进行了压缩,测试表明,对于10k以上的页面,会产生效果,而且页面越大,效果越明显……