Cliff, I believe the most common solution is to have the your processing script launch a sub-process to run in the background, and then return a response page that periodically refreshes (via javascript) to poll the server for some flag indicating that the process has completed. (Ex: checking for the existence of a file or something like that).
You launch the sub-process using exec() or some other function in that family. http://us3.php.net/manual/en/ref.exec.php The trick with these functions is that the calling script halts when the function is called and waits for the sub-process to complete and return a result. You can prevent this by setting the sub-process to run in the background and redirecting its output (STDERR _and_ STDOUT) to go to a file (or nowhere). Here's an example: exec("php takes-a-long-time.php > /dev/null 2>&1 &"); takes-a-long-time.php would do something time-consuming, and when it completed, would deposit a file somewhere or add a line to a file to indicate that it was complete. There are lots of related comments in the user contributed notes on the exec page that I linked to above. I guess there are some potential problems with trying to do this on a windows server -- I've only done this on unix servers. The other gotcha I've run into is that that php goes CRAZY if you try this on a server that is running php as a CGI. If you call a php sub- process from a php page it goes into a recursive loop and eventually chokes. I'd be curious to hear if others have run into this problem. Any solutions? *** I believe there is another way to tackle this issue which involves some fancy output buffering. The page only partially downloads and then keeps the connection open while it waits for the rest of the script complete. Anyone else familiar with this technique? -- Dell On Oct 30, 2006, at 9:18 PM, Cliff Hirsch wrote: > Many web sites display a “processing please wait” page after > submitting an order, request, etc. and then display the final > confirmation page when it’s available. > > I’m confused by how that works. Does the server-side script spit > out a “processing” page by flushing the output buffer and then > redirect when the script is completed? Or does the client-side > JavaScript display the “processing” page while the server script > goes about its business? > > Cliff _______________________________________________ New York PHP Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk NYPHPCon 2006 Presentations Online http://www.nyphpcon.com Show Your Participation in New York PHP http://www.nyphp.org/show_participation.php