• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

必须要了解的php缓存机制

php 搞代码 3年前 (2022-01-22) 15次浏览 已收录 0个评论

所有的php程序员都知道在php脚本里面执行 echo “1”;访客的浏览器里面就会显示“1”。
但是我们执行下面的代码的时候,并不是显示“1”之后5秒再显示“2”,而是等待5秒后直接显示“12”

echo '1';sleep(5);echo '2';

这就涉及到几个缓存机制,为了更高的薪水,同学们非常有必要把这个缓存机制学习好。
通常情况下,我们的web应用由以下几个要素构成:
php->apache->浏览器。这篇文章我们就以这个架构为例来讲解数据是如何在整个“链条”上流通的。

这就涉及到几个缓存机制,为了更高的薪水,同学们非常有必要把这个缓存机制学习好。
通常情况下,我们的web应用由以下几个要素构成:
php->apache->浏览器。这篇文章我们就以这个架构为例来讲解数据是如何在整个“链条”上流通的。

echo '1';ob_flush(); //把php缓存写入apahce缓存flush(); //把apahce缓存写入浏览器缓存sleep(5);echo '2';

我们把代码改成如上之后,浏览器还是要等5秒才同时显示“12”,这是因为“1”虽然已经发送给浏览器,但是浏览器缓存还没有装满,并没有渲染,一直到等到程序结束后才渲染出“12”。
我们以谷歌浏览器为例(缓存1000bytes),通过下面的代码,我们就可以实现先显示“1”,隔5秒再显示“2”

echo str_repeat(' ' ,1000); //这里会把浏览器缓存装满echo '1';ob_flush(); //把php缓存写入apahce缓存flush(); //把apahce缓存写入浏览器缓存sleep(5);echo '2';

讲到这里,我们不得不提一下“ob_start()”这个函数,这个函数的作用就是开启一个新的php缓存,但是这个缓存远远不止4096,php文档中描述的是这个缓存足够大。我们还是通过代码来说明

ob_start();echo str_repeat(' ' ,1000); //这里会把浏览器缓存装满echo '1';ob_flush(); flush(); //把apahce缓存写入浏<i style="color:transparent">本文来源gaodai$ma#com搞$$代**码)网8</i><strong>搞代gaodaima码</strong>览器缓存sleep(5);echo '2';

在原有的基础上我们仅仅加了个ob_start(),结果又变成了等5秒后同时显示”12”了。这是因为每一个ob_start()都在原来的缓存空间上开辟一个子缓存空间,ob_flush()是把当前缓存空间输出到上级缓存空间,php只有一个缓存空间的时候,上级缓存空间就是apache的缓存,当php有多个缓存空间的时候,ob_flush()的就不能把php缓存写入apache缓存了。我们还是借助图片来理解:

以上就是必须要了解的php缓存机制的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:必须要了解的php缓存机制
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址