discuz安装程序的实时刷新

在使用discuz的时候,我们通常都需要使用discuz中的程序进行安装。

但是在安装的过程中,有一个有趣的现象,就是结果会实时刷新,效果如同是有使用轮询一样,但是轮询一般都是对数据库方面的操作,但是discuz又不是:


通过查看代码,可以发现这个页面的内容是慢慢返回的:


这样子,显然就不是长轮询实现了,而是使用缓存输出了。

看下discuz安装程序代码,果然发现了如下的代码片段:



php缓存区:

当使用php的echo的时候,php并不会立即将字符串送到浏览器(如果这样的话,ttl会非常长,UX相当差)。

在php中的实现是,echo的时候,先放入到php建立的缓冲区中,当缓存区达到一个值的话,php就会将缓冲区的内容送到tcp缓冲区,tcp缓冲区达到一个值后,系统就将tcp缓冲区的内容送到浏览器(后面这段不归php管,前面的php缓冲区才是)。

这个缓冲区的大小是多少呢?在php.ini中可以看到

output_buffering = 4096


ob_flush和flush的区别 

调用顺序更好为:ob_flush之后flush

ob_*系列函数, 是操作PHP本身的输出缓冲区.

所以, ob_flush是刷新PHP自身的缓冲区.

而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装的时候, 才有实际作用. 它是刷新WebServer(可以认为特指apache)的缓冲区.


在使用页面静态化技术中,通过也是使用缓冲区技术的。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值