为什么没有使用ob_start开启缓存,也可以使用ob_get_contents()获取浏览器输出html页面,php.ini文件也是默认关闭缓存的,请大神解答一下,我是新手,不太明白缓存的用法。

解决方案 »

  1.   

    php 会在运行时先打开一个缓冲区,这是 php5.4 之后新增的功能,这样就不再限制 header 之类函数之前的输出了
      

  2.   

    在php.ini设置
    output_buffering = 0;然后运行下面代码
    ob_start(); // 开启ob_start(); // 开启
    echo '111';
    $data = ob_get_contents();
    echo 'data='.$data;
    输出:111data=111ob_start(); 不开启echo '111';
    $data = ob_get_contents();
    echo 'data='.$data;
    输出:111data=data为空,因为缓冲区没有开启,正常的所以如果output_buffering为0,然后ob_start不开启,使用ob_get_contents是获取不到数据的。
      

  3.   

    我是用php7
      

  4.   


    我用的是5.6,你贴的代码我也有试过,就算不用ob_start(),输出还是:111data=111,应该是,一楼说的那种情况
      

  5.   

    嗯,估计php7优化了这里。