Ugh, this is so silly.
We're going in circles and you are dogmatic about doing it one way only instead of just telling us what you need and asking us how to do it.
First of all, trying to do it with all the cute automatic stuff like download.com just makes it harder.
Figure out the file download FIRST, then make it fancy later.
Server push is NOT needed for this task. Anyway if you really want server push, PHP does it out of the box with buffering ob_start(), ob_flush(), etc.
Why all this trouble? Because I'm generating a .vcs file and don't want to store it as a file on my HD...but rather dynamically generate a pretty table for the visitor in HTML and give them the file. So, unless I write another page and query the database again, none of the other options mentioned work. Since I already have the data from the query, I just want to push it to them in a different format.
I'm confused. Are you making VCS or HTML?
If you are making VCS, then you can do that easily with the process below. If you are making HTML, just tell the user to pull down the File menu to "Save As...".
To make a VCS file, there is absolutely nothing preventing you from taking the results of the query, stuffing it into a string, and passing it to a "download" page with $_POST. There is no need to re-perform the query on the download page.
Looking up VCS on the internet, I found an example VCS file here:
http://www.dominoconsulting.net/Stars2002/
VCS is just a plain text database format.
If you used the search engine, you would have found this article right here on phpbuilder.com. Ugh!:
http://www.phpbuilder.com/columns/chow20021007.php3?print_mode=1
Here's what I'd do:
your_current_page.php
<?php
// do database query
// and stuff into $data
?>
<form action="download_vcs.php" method="post">
<input type="hidden" name="data" value="<?php echo $data; ?>">
<input type="submit" name="submit" value="Download">
</form>
download_vcs.php
<?php
header("Content-Type: text/x-vCalendar");
header("Content-Disposition: inline; filename=MyvCalFile.vcs");
echo $_POST['data'];
?>