|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果自己想放弃,暴力一点的话,就自己抽自己一个嘴巴。法式 静态网站的内容减速显示非常主要,本文经由过程对 PHP 几个函数的深切会商,提出了 PHP 网页紧缩弛缓冲的处理计划
1、引见几个掌握 PHP 输入的函数
PHP4 采取了缓冲机制,在你决意发送之前,一切内容只是存在于缓冲中,而不是直接发送给阅读器,固然你可以用 header 和 setcookie 函数来完成,然而这两个函数比拟于功效壮大的输入函数来讲只是一点“虫篆之技”。让咱们来看看这些函数的真本领:
void ob_start(void);
本函数告知 PHP 处置器把一切输入重定向到外部缓冲,挪用这个函数后,就不会有输入到阅读器。
string ob_get_contents(void);
本函数把输入缓冲前往到一个字符串,你可以用来把聚积起来的输入一同发送到阅读器。固然要先关失落缓冲。
int ob_get_length(void);
本函数前往输入缓冲的长度。
void ob_end_clean(void);
本函数排除并封闭缓冲。在输入到阅读器之前你需求利用这个函数。
void ob_implicit_flush ([int flag])
本函数用来掌握隐式缓冲泻出,缺省为 off,假如翻开时,对每一个 print/echo 或输入号令的了局都发送到阅读器。
2、采取输入掌握来紧缩 PHP 的输入
在入手下手之前,要包管你的 PHP4 编译时撑持 Zlib。
起首,初始化输入缓冲:
<?php
ob_start();
ob_implicit_flush(0);
?>
然后发生一切的输入内容。
<?php
print("本例为紧缩输入!");
?>
页面熟成今后,采取:
<?php
$contents = ob_get_contents();
ob_end_clean();
?>
还要反省阅读器是不是撑持紧缩数据,咱们采取在变量 $HTTP_ACCEPT_ENCODING 中反省 "gzip, deflate"的举措:
<?php
if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) {
// 发生 gzip 后的内容
} else {
echo $contents;
}
?>
上面咱们剖析如何发生 gzip 输入:
<?php
// 告知阅读器上面吸收的是 gzip 数据。
header("Content-Encoding: gzip");
// 显示 gzip 文件的文件头
// 只需一次就够了
echo "x1fx8bx08x00x00x00x00x00";
// 盘算长度和 CRC 校验码
$Size = strlen($contents);
$Crc = crc32($contents);
// 紧缩数据
$contents = gzcompress($contents, 9);
// 不克不及直接在这里输入内容,由于还没有写入 CRC 呢!
$contents = substr($contents, 0, strlen($contents) - 4);
echo $contents;
gzip_PrintFourChars($Crc);
gzip_PrintFourChars($Size);
function gzip_PrintFourChars($Val) {
for ($i = 0; $i < 4; $i ++) {
echo chr($Val % 256);
$Val = floor($Val / 256);
}
}
?>
3、缓冲 PHP 的输入
在 PHP4 里能很轻易的完成缓冲,咱们来看例子:
<?php
// 对恳求的 URI 发生独一的文件名。
$cached_file=md5($REQUEST_URI);
if((!file_exists("/cache/$cached_file"))||(!is_valid("/cache/$cached_file"))) {
ob_start();
ob_implicit_flush(0);
// 在这里输入缓冲
$contents = ob_get_contents();
ob_end_clean();
$fil=fopen($cached_file,"w+");
fwrite($fil,$contents,$strlen($contents));
fclose($fil);
}
readfile($cached_file);
?>
4、结论
PHP 输入缓冲函数在操作剧本输入方面非常有效,把缓冲紧缩后输入能削减 80% 的输入工夫,这关于存取其他数据资本(例如数据库或 XML)来讲,也是一个很好的缓冲机制。
如果你单纯是为了做网站赚钱,我想你还是别学php的好,去学ASP,JSP好了,毕竟它们有实力雄厚的公司去支持它们。 |
|