This article describes the use of the PHP output cache, in PHP's so-called output cache, that is, the echo or other output commands in the code are written to PHP buffer at execution time, after the script executes or enforces the output cache command, the data will be output to the browser. One, what is the PHP output cache in PHP so-called output cache, that is, the code of ECHO or other output commands are written to PHP buffer at execution time, after the script executes or enforces the output cache command, the data will be output to the browser (where PHP Buffer is the output_buffering set in php.ini, default is on, indicating unlimited size, can be replaced by numbers to limit the size). Example: Echo ' hlmblog.com '; echo ' technology '; echo ' Share ';These two echoes are inserted sequentially into the buffer, and only the script execution completes or the cache output is forced to output the data to the browser. Output echo data in real time: Ob_end_flush (); Close the PHP cache, or execute Ob_flush () before Flush (), with the following explanation for Echo Str_pad ("", 256); for ($i =5; $i >0; $i-) {echo $i. ' '; Flush (); Sleep (1); }Attention: 1:flush and Ob_flush differences: At first glance the two are very similar, and many of the manuals are not clear explanation, the two are ambiguous, in fact, there are very big differences. When PHP.ini does not open the PHP buffer cache, the contents of the PHP script output will be in the server waiting for output state, will not be saved to the output cache, because the cache is not open, Flush can now be used to output content that waits for output to the client (browser or other output). When PHP.ini opens the PHP buffer cache, the first step of the PHP script output is stored in the output cache, when the output content is no data, with flush words are no effect, no data. So first use Ob_flush to take out the content in the output cache to wait for the output state, and then use the flush to send the content to the client. The order of execution is first Ob_flush and then flush. Therefore, to achieve real-time output, either using Ob_end_flush first switch off the PHP output cache directly flush, or first ob_flush and then flush. 2: The browser can not output the real-time data modified code, in Chrome Firefox IE and other browsers are one-off output: Ob_end_flush (); Close the PHP cache, or Ob_flush before flush (); echo Str_pad ("", 256); for ($i =5; $i >0; $i-) {echo $i; flush (); sleep (1);}Just add an HTML tag and you can output it in real time. The reason is: only in the face of HTML tags will be instantaneous output, it is amazing, fortunately, the general output of the content will be with HTML tags, very few plain text. Workaround: Add a carriage return or other HTML tags to solve the problem. Second, the control cache output Example 1, the static page static page loading speed is fast Echo Str_pad (', 1024);//Buffer overflow ob_start ();//Open Buffer $content = ob_get_contents ();//Get the contents of the page output $f = fopen ('./index.html ', ' W '); Fwrite ($f, $content);//content written to TXT file fclose ($f); Ob_end_clean ();//emptying and closing buffers2. Capture output function test ($param) {if ($param) {ob_start (); eval ($param); $contents = Ob_get_contents (); Ob_end_clean ();} else {echo ' regrets no output '; exit ();} return $contents; } |