php缓冲技术,PHP的缓冲技术实战

如何利用PHP的输入输出缓冲让PHP脚本运行得更加快速和高效。下面主要介绍PHP输入输出缓冲的实战技术。

在PHP中,对缓冲的操作以及与缓冲相关的函数名均以ob_开头。在PHP脚本中开启输出缓冲,只要在脚本首行声明ob_start()函数即可,这样我们就可以打印任何文本或要显示的HTML页面。虽然输出缓冲打开了,但是在PHP脚本没有执行结束之前,是不会有任何输出发送到客户端浏览器的,这可能不是我们想要的结果,因为尤其是运行了一个很长时间的脚本时,客户端浏览器会长时间显示空白页面或停止响应,这是一个很烦人的用户体验。

不过这也是可以解决的,我们可以立即将缓冲做“flush”输出。使用ob_flush()函数,当这个函数执行后,在之前已经运行和收集到的输出缓冲会被立即发送到客户端,然后再输出ob_flush()函数后面的缓冲。我们也可以清空收集到的输出缓冲区的内容,可以使用ob_clean()函数,这个函数将完全情况所有的输出缓冲。

如果在一个脚本中做输出缓冲时需要马上结束,我们可以使用两种函数:ob_end_clean()和ob_end_flush()。ob_end_clean()表示结束输出缓冲功能,凡是已经收取的数据会被立即抛弃。ob_end_flush()函数功能也是结束缓冲,但会先将已经收取的输出缓冲输出到客户端再抛弃。因此,大部分时候,我们使用的是ob_end_flush()函数。

输出缓冲一个最大好处还不仅在于此,而是输出缓冲能够实现多层次。例如:

在上面的例子中,第二个缓冲是不会送到客户端,而第一个缓冲可以看到。

下面说说从缓冲读取内容

在PHP中,使用ob_get_contents()函数打开并读取一个缓冲区内容。ob_get_contents函数没有参数,它返回的内容是最近使用的缓冲,例如:

$result = mysql_query(“select * from table where id=55”);

while($row = mysql_fetch_assoc($result)){

print(…);

}

如果不想把数据输出到浏览器上,而是直接输出到文件中,这就需要使用到ob_get_contents()和 ob_get_length()函数。例如:

ob_start();

$result = mysql_query(“select * from table where id=55”);

while($row = mysql_fetch_assoc($result)){

print(…);

}

$output = ob_get_contents();

$ob_length = ob_get_length();

ob_end_clean();

file_put_contents(“employee.txt”,$output); //输出到employment文件中

echo “缓冲区内容长度为$ob_length”;

下面介绍一下在缓冲技术中使用回调函数

回调函数的意思是将函数的名字作为参数传递给ob_start()函数,当开始一个新的缓冲输出时,就调用这个函数,这意味着在输出内容之前,可以任意修改要输出的内容,然后在发送出去。例如:

在上面的例子中,我们用了输出回调方法增加“CCJK”到后面输出内容的尾部。

我们还可以通过替换函数来替换输出的内容,这样我们就可以灵活地控制数据的输出。

精彩内容,下节再续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值