php输出东西,会保存在一个php维护的内存里,称为buffer也行,缓存也行,都是一个意思。然后当这个buffer满了,php会自动往web server发送这些数据。
; u, m0 ~! |# ]' T1 X; F; J
i1 p$ K; \; o也就是说每次echo,并不一定会输出东西,而是保存在buffer里。 ; H5 m) P, E' [
$ M$ m# W5 J8 N8 |/ L {7 B0 o6 t- A
ob_start()的意思,可以理解为(但是实际上和我下面的说法有区别),这个buffer由ob_系列函数来来控制,也就是,PHP不会维护自己的 buffer,不会自动把buffer的内容自动发送到web server,直到你ob_end()或者类似的ob操作。 7 Z9 V( ~' [1 H
9 B+ m0 r4 d/ x. a" N
ob_函数一般用来捕获当前的输出,跟效率是没什么关系的。至于为什么捕获输出,原因很多,例如我捕捉输出,缓存到一个文件里,下次请求就可以直接读这个cache文件的内容作为输出了。
) i4 U: |% `' F" V, L2 E2 {. S0 t" }/ H K
|
|