|
Posted by Jerry Stuckle on 10/13/06 03:19
Cleverbum@hotmail.com wrote:
> Jerry Stuckle wrote:
>
>>Cleverbum@hotmail.com wrote:
>>
>>>Jerry Stuckle wrote:
>>>
>>>
>>>>Cleverbum@hotmail.com wrote:
>>>>
>>>>
>>>>>Jerry Stuckle wrote:
>>>>>
>>>>>
>>>>>
>>>>>>Cleverbum@hotmail.com wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>>I'm hoping to execute some code "when the page has completely finished
>>>>>>>loading" by which I mean the page and all the images on it, does anyone
>>>>>>>know of a way to do this?
>>>>>>>
>>>>>>
>>>>>>Are you looking to execute some code on the server or the client? What
>>>>>>are you actually trying to do?
>>>>>>
>>>>>>Remember - PHP is server side only. It has no direct contact with the
>>>>>>client. All it knows is when it's passed its data off to the web server
>>>>>>for sending to the client. It doesn't know what happens after that -
>>>>>>not even if the browser is closed or the connection dropped before the
>>>>>>page completed loading.
>>>>>>
>>>>>>You can do it in Javascript on the client, and as Mateusz indicated you
>>>>>>can use AJAX to call a function back on the server.
>>>>>>
>>>>>>--
>>>>>>==================
>>>>>>Remove the "x" from my email address
>>>>>>Jerry Stuckle
>>>>>>JDS Computer Training Corp.
>>>>>>jstucklex@attglobal.net
>>>>>>==================
>>>>>
>>>>>
>>>>>I was hoping to redirect the client to the next page once the first had
>>>>>been loaded, so I guess some clientside javascript would be sufficient?
>>>>>
>>>>
>>>>You could, but then why even load the first page? It will just flash up
>>>>there then go to the next page.
>>>>
>>>>If I were the client I would be very upset about this.
>>>>
>>>>But if you insist, you can do it with an html redirect. Check the
>>>>alt.html newsgroup for help on how to do it.
>>>>
>>>
>>>
>>>Well the first page does the processing that the second page needs
>>>before it can be displayed, the processing is done by pages loaded
>>>within image tags, there are over 4,000 of them and the processing time
>>>will obviously vary, hence why I wanted the trigger to activate once
>>>the page and all the images had loaded.
>>>
>>
>>OK, I understand the pages doing the processing. But why would you send
>>any data to the client if it's not meant to be seen, anyway?
>>
>>And in a case like that, why would you care if the page is loaded or not?
>>
>>--
>>==================
>>Remove the "x" from my email address
>>Jerry Stuckle
>>JDS Computer Training Corp.
>>jstucklex@attglobal.net
>>==================
>
> The page needs to finish loading for all of the processing to complete.
> Each image on the first page corresponds to a certain portion of the
> work that needed doing before the second page is shown. If the second
> page is shown before the first one is finished the information on it
> will be wrong.
> I've done the data processing this way as my host has a maximum
> execution time of 30 seconds and only supports web languages - not
> things like java/c.
> The images also show information about what happened in the process,
> which is useful for debugging, but will most likely be ignored by the
> client.
>
OK, but there's no guarantee just because you send something to the
client that it will be displayed immediately. It can be buffered by PHP
and the web server. You can get around this most of the time with
ob_flush() and flush(), but additionally, the browser may not display
the data until the page is loaded.
With images it's even harder. When you sent the <img> tag you are not
sending the image itself. The browser has to receive the tag, then go
back to the server and fetch the image. It may do that immediately on
receipt of the tag, or it may wait until the page is loaded.
The bottom line is - sending images like this for progress is at best a
hit and miss proposition.
Maybe you can get around your problem (and the timeout problem) with
help from javascript. Instead of trying to do everything in one page,
do a little processing and send a page to the client (including the
image you wish). In that one use the onload property for the body to
load the next page in the sequence.
That way your client will see the images, and since you've broken up
your processing you don't run into the 30s limit.
--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
[Back to original message]
|