Many thinks for your input...
The sessions approach seems like a good one.
Since posting my question, I thought of writing the file in a tmp dir and using it.
Then scan the tmp dir for all files older than an hour or so and unlinking them. Sorta like a cron job without the
extra effort.
Our site has a low usage so there will never be many obsolete files in the temp dir.
Again, thanks........
Satyam wrote:
I don't think you can. Each element in a web page is transmited over a
separate connection, when the browser parses an included element, such
as an image, an iframe, a stylesheet, an included script file or
whatever, it opens a new connection to the server (or another server in
the same domain) and from then on, they run completely asychronous, any
of them can finish at any time, depending on many factors completely out
of you control (such as caching so that an element might be taken from
the local cache instead of picked from the server, which wouldn't be the
case with dinamically generated images as your situation, but I mention
it just as an example).
So, the answer to the question in the subject line is no, you cannot,
the thread serving your main HTML document might end before the server
even started serving the included image, or the other way around, and
once your script if finished, you have no further control. Holding your
script until the image is served might get it hang forever, since the
image might not even be requested, if taken from the browser cache on
the client side, so you might be waiting forever.
If you want to clean up dynamically generated files, you have to do it
via a cron job every so often. Another alternative is serving the
included images via a separate script, thus you would have to have:
echo '<img src="imageserver.php?img=' , urlencode($rel_mapfile) , '"
alt="Course Map">' , CRLF;
Then imageserver.php would pick the image, serve it and when it is
finished you delete it, nevertheless, this takes more CPU time, so I
would still take the other option.
If you can attach a script to the end of a session, and you put all
dynamically generated content under a directory named after the
SessionId, when the session is over, you delete the complete directory
with everything it had. (I know IIS does that, but I never had to
manage an Apache server, someone can help on that?). This one doesn't
take any overhead on a per-page basis, just once per session and keeps
the disk storage clean.
Just some sugestions, I hope they help.
Satyam
----- Original Message ----- From: "Al" <news@xxxxxxxxxxxxx>
To: <php-general@xxxxxxxxxxxxx>
Sent: Sunday, March 05, 2006 9:17 PM
Subject: How can I tell if an output stream is finished?
I have a page that resizes an image to be included in a html page, using:
echo "<img src=\"$rel_mapfile\" alt=\"Course Map\">\n";
unlink($rel_mapfile);
I need the other html stuff on the page so I need to fetch a file from
the server to include in the page.
So, I resized the image and saved it as a file. That works fine.
After sending the temporary resized file I want to delete it.
Obviously, an unlink($rel_mapfile) is executed before the echo "<img
src=\"$rel_mapfile\" ... is finished.
Thanks....
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php