84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
ob_start在手册里是这么描述的:
此函数将打开输出缓冲。当输出缓冲激活后,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。
那么按照我的理解是这样的:
为什么和手册里描述的不一样。
学习是最好的投资!
应当理解为,不会立刻输出到上级缓冲区,可以通过ob_*的相关操作进行缓冲区的获取、冲出、清除 等,此时可以将输出进行统一,比如正则处理,数据包装等。
页面静态化可以使用php提供的ob缓存技术手动将缓存内容提交的apche等服务器处理
$id = isset($_GET['id'])?$_GET['id']-0:0; $filename = "html/".date("Ymd")."/news-id".$id.".html"; if(!file_exists("html/".date("Ymd"))){ mkdir("html/".date("Ymd")); } echo $filename; if(!file_exists($filename) || filemtime($filename)+60query($sql); $row = $res->fetch_assoc(); if($row){ echo ""; echo ""; echo "ID"; echo "标题"; echo "内容"; echo ""; echo ""; echo "".$row['id'].""; echo "".$row['title'].""; echo "".$row['content'].""; echo ""; echo ""; }else{ echo "没有数据"; } $content = ob_get_contents(); ob_end_clean(); file_put_contents($filename,$content); } require $filename;
那是因为你脚本执行完了缓冲就输出来了你可以在echo 后面加一句ob_end_clean();缓冲就会清掉了
完了不输出那才怪呢。。。ob 只是让我们可以获取到php的渲染结果,做缓存之类用的。
应当理解为,不会立刻输出到上级缓冲区,可以通过ob_*的相关操作进行缓冲区的获取、冲出、清除 等,此时可以将输出进行统一,比如正则处理,数据包装等。
页面静态化可以使用php提供的ob缓存技术手动将缓存内容提交的apche等服务器处理
那是因为你脚本执行完了
缓冲就输出来了
你可以在echo 后面加一句ob_end_clean();
缓冲就会清掉了
完了不输出那才怪呢。。。ob 只是让我们可以获取到php的渲染结果,做缓存之类用的。