|
Posted by Andy Hassall on 01/01/07 21:22
On 1 Jan 2007 11:48:57 -0800, Andreas.Burman@gmail.com wrote:
>I call a program through exec that can take a long time to execute.
>This is fine but I would like to show some kind of animation or
>something while the program is running and when it is finished letting
>the user download the file.
>
>Right now I'm using code similar to this simplified example:
>
>----- index.php -----
><form method="post" action="genetate.php" target="_blank">
> <input type="submit" value="Generate!"/>
></form>
>
>----- generate.php -----
><?php
> $tmpname = time() . md5("bla");
>
> // Writes to $tmpname
> exec("takesalotoftime $tmpname");
>
> $len = filesize("$tmpname");
>
> header('Content-type: application/postscript\r\n');
> header("Content-Length: $len;\r\n");
> header('Content-Disposition: attachment; filename="' . $tmpname
>. '"\r\n');
>
> readfile("$tmpname");
>?>
>
>So what is the best way to start the exec, show an animation until it
>is finished and then send the file to the user?
One approach; show a page with an animated gif, flush the page, run the
long-running exec, then do a Javascript redirection when it's done (bearing in
mind that it's not 100% reliable).
Or move it back a step; redirect to page a with an animation and a notice to
the user to be patient, redirect to the long-running page and rely on the
browser not updating the page until the next one starts returning stuff.
If the process can provide feedback on the progress, then proc_open and
HTML_Progress from PEAR may let you get more sophisticated.
You have a few options since it looks like you're writing to a file so you can
always fetch that on a separate page - although that runs the risk of leaking
temporary files if it's not a true temp file (but if it is a true temp file
then it'd disappear anyway).
How long does it take? You may run into maximum execution time limits as well
as the users' impatience.
--
Andy Hassall :: andy@andyh.co.uk :: http://www.andyh.co.uk
http://www.andyhsoftware.co.uk/space :: disk and FTP usage analysis tool
Navigation:
[Reply to this message]
|