I need to display most of a page's content before outputting the content from a function. The function takes a while to execute, and returns some content for the page. I need the rest of the page to display first, then run the function, and then 'insert' the function output.
It would seem that I'd need to use ob_start at the beginning of the function, then store that data in a variable with ob_get_content()
. But I'd also need to run the function after the rest of the page displays.
Here's some code I have tried without success (this is the content area inside the body tag):
<div id='part1'>
<p>here is part 1 of the content</p>
</div>
<div id='part2'> // this is where the function output will be inserted after processing it
<p>part 2</p>
<?php echo long_function();?>
</div>
<div id='part3'>
<p>this is part 3 of the content
</div>
<?php
function long_function() {
// some process that takes a long time to get data
// and stores it in the $part2_content
return $part2_content;
}
The result should be that the part1 and part3 div content should be displayed. And then, when the long_function()
finishes with gathering up it's data, that data should be output in the 'part2' section.
I've tried to put an ob_start()
at the beginning of long_function()
, then $part2_content = ob_get_contents()
to store that output data (without an ob_flush).
I think that I may need to add some sort of DOM 'write' to the 'part2' ID, but not sure of the right combination to accomplish.