ob_start() 打开缓冲区的作用是什么,怎么用

解决方案 »

  1.   

    ob_start();
    ....
    ob_clean();
    这两句中间的任意输出,都可以用ob_get_contents();来获取而不输出到浏览器.经典应用:将phpinfo()的信息写到文件里.
    ob_start();
    phpinfo();
    $phpinfo = ob_get_contents();
    //文件读写操作
    ob_clean();
      

  2.   

    那是不是可以这样理解
    正常的写入等操作是在内存中完成的
    但是
    ob_start(); 
    .... 
    ob_clean(); 
    这里的操作直接通过服务器的缓存完成,也就是所谓的提高效率
      

  3.   

    php输出东西,会保存在一个php维护的内存里,称为buffer也行,缓存也行,都是一个意思。然后当这个buffer满了,php会自动往web server发送这些数据。也就是说每次echo,并不一定会输出东西,而是保存在buffer里。ob_start()的意思,可以理解为(但是实际上和我下面的说法有区别),这个buffer由ob_系列函数来来控制,也就是,PHP不会维护自己的buffer,不会自动把buffer的内容自动发送到web server,直到你ob_end()或者类似的ob操作。ob_函数一般用来捕获当前的输出,跟效率是没什么关系的。至于为什么捕获输出,原因很多,例如我捕捉输出,缓存到一个文件里,下次请求就可以直接读这个cache文件的内容作为输出了。