仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1025|回复: 18
打印 上一主题 下一主题

[学习教程] PHP编程:为减速 PHP 法式而勉力

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:20:46 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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好了,毕竟它们有实力雄厚的公司去支持它们。
爱飞 该用户已被删除
沙发
 楼主| 发表于 2015-3-20 10:34:09 | 显示全部楼层
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-29 15:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表