Re: Progress bar?
| From: | Andy Woolley | Date: | Fri, 08 Dec 2000 15:22:05 +0000 |
| Subject: | Re: Progress bar? | ||
| References: | 1 2 3 4 5 6 7 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-29357@lists.php.net to get a copy of this message | ||
Jay,
If you use the theory you specify below with the theory from my previous
email, I'm convinced that we have a solution.
Basically my previous message stated that you should split your single query
into multiple queries, when each query finishes you can send a response to
the browser telling it to increment the status bar.
If you use the Microsoft theory for status bars they always get to 100% and
then wait another 30 seconds before the process finishes anyway, so I
wouldn't worry too much about accuracy :-) ho-ho-ho
Andy.
www.databasewatch.com
----- Original Message -----
From: "Jason Lavigne" <jlavigne@stonecroft.net>
To: "Andy Woolley" <andy@milonic.com>
Cc: <php-general@lists.php.net>
Sent: Saturday, December 09, 2000 3:08 AM
Subject: Re: [PHP] Progress bar?
> You could use it for anything as long as the bar knows what the end number
> will be and when you send an update the number must be less that or equal
> that the end.
>
> If you wanted to you could send 100 and your starting number then break it
> done (in your code) like this
> 0% - 20% means the getting data.
> 21% - 40% means sorting data, also send a text message for the user
> "Sorting...Please wait."
> 41% - 60% means comparing data, also send a text message for the user
> "Comparing..Please wait."
> 61% - 80% means cleaning data, also send a text message for the user
> "Cleaning data...Please wait."
> 81% - 100% means writing back the data, also send a text message for the
> user "Writing...Please wait."
>
> So the user would see this.
> 0% Please wait, initializing. (In you code you are doing your select)
> then the bar jumps to 20% and then increments to 21%, 22% .... to 40%
while
> the sort happens etc... for the remainder 60% while your code does it's
job.
>
> Now about the network traffic, on an Intranet this is not an issue because
> all that is being send is a number surrounded by JavaScript like this.
> "<script>DoBarUpdate(45);</script>"
>
> This is exactly how all status bars that display the correct processing
> percentage works, easy isn't it :)
>
> Jay
>
>
> ----- Original Message -----
> From: "Andy Woolley" <andy@milonic.com>
> To: <php-general@lists.php.net>
> Sent: Friday, December 08, 2000 9:42 AM
> Subject: Re: [PHP] Progress bar?
>
>
> > Jay,
> >
> > I take it you are looking at a function to display a status bar mostly
for
> > long queries.
> >
> > How about doing 5 queries to return the same results and then
incrementing
> > the status by 5 each time one of the queries has been completed.
> >
> > Like this
> > 1. Run a query to return the total number of records: $totalrecords.
> > 2. Divide this value ($totalrecords) by 5: $recorddivision
> > 3. Set a starting point value: $starter
> > 4. Set records variable: $records = $recorddivision
> > 5. Iterate through a Loop (5 Times)
> > 6. Set query 1 to be :SELECT * FROM ..... LIMIT $starter, $records
> > 7. Increment loop adding $recorddivision value to $starter and $records
> > 8. On each iteration send a response to the browser to increment the
> status
> > bar.
> >
> > This would add network traffic and page load times but could work as
long
> as
> > your query isn't too complex.
> >
> > Let me know what you think.
> >
> > Andy
> > www.databasewatch.com
> >
> >
> > ----- Original Message -----
> > From: "Jason Lavigne" <jlavigne@stonecroft.net>
> > To: "Miles Thompson" <milesthompson@sprint.ca>;
> > <murph@murphatnight.com>
> > Cc: <php-general@lists.php.net>
> > Sent: Saturday, December 09, 2000 2:01 AM
> > Subject: Re: [PHP] Progress bar?
> >
> >
> > > This bar would not get that until after the query was done, but if
there
> > was
> > > processing, comparing data from query with user input, then at that
time
> > the
> > > status bar would "kick" in and give feed back. Like this:
> > >
> > > 1) Query DB
> > > 2) Return number of rows to browser
> > > 3) Processing a row from result
> > > 4) Update the record count to the browser
> > > 5) Go to 3 if not done
> > >
> > > This would at least tell the user about how many records are left to
> > > process.
> > >
> > > On most queries, this bar would be up for a second or two, but for
heavy
> > > data processing ( checking inventory against what ever, 100,000+
> records )
> > > it could be useful.
> > >
> > > Yes the JavaScript end could be mean but in the PHPChat Example
> > > (http://www.phpwizard.com) they did a good job at handling it.
> > >
> > > The DHTML or Flash is only used to display a message and a % with a
bar.
> > > Nothing more.
> > >
> > > Now the more I think about it, this could be useful, a couple of
> > functions,
> > >
> > > StartProgressBar() - Would open the streaming window with DHTML.
Default
> > > message "Please wait, initializing."
> > > SendProgressStart() - Would be the total num, ie... num of records,
100
> or
> > > what ever number you wanted to mean "this is the end number".
> > > SendProgressMessage() - Would send a text message to the window for
the
> > user
> > > "Updating your file.....Please wait...."
> > > SendProgress() - This would be the update number, this would make the
> > "bar"
> > > move and the % number update.
> > >
> > > By default, when SendProgress() reaches 100%, the DHTML and/or Flash
> would
> > > shut itself down and display the output from the system.
> > >
> > > I never said nor implied that this would be for a beginner to create,
> this
> > > would be for an advanced programmer to tackle.
> > >
> > > I just do not like people saying "That is not possible", it is ALWAYS
> > > possible, just look at it in a different way :)
> > >
> > > Jay
> > >
> > > ----- Original Message -----
> > > From: "Miles Thompson" <milesthompson@sprint.ca>
> > > To: "Jason Lavigne" <jlavigne@stonecroft.net>
> > > Cc: <murph@murphatnight.com>; <php-general@lists.php.net>
> > > Sent: Friday, December 08, 2000 8:26 AM
> > > Subject: Re: [PHP] Progress bar?
> > >
> > >
> > > > Jason,
> > > >
> > > > Very impressive - but what SQL engines provide a count of records as
> > they
> > > > process? Or is that a part of the MySQL / PostgreSQL docs I haven't
> > > uncovered
> > > > yet?
> > > >
> > > > I do believe, with all the Javascript and DHTML it would be an
ongoing
> > > > maintenance headache.
> > > >
> > > > I'm also curious about the original poster's query, which apparently
> > takes
> > > so
> > > > long to run. Full join on a big table?
> > > >
> > > > Miles
> > > >
> > > > Jason Lavigne wrote:
> > > >
> > > > > If you were to use a streaming HTML window from PHP ( as seen in
> > PHPChat
> > > on
> > > > > http://www.phpwizard.com ) you can keep
> > > > > sending data to the
browser
> > > without
> > > > > reposting ( read about flush() ) to the server. So if you did this
> you
> > > could
> > > > > do the following in PHP:
> > > > >
> > > > > Do select from SQL and return Num of rows (use a function that
> counts
> > > the
> > > > > total number of records from the select) and send that to the
> browser.
> > > > > As you process each record you could send back to the browser that
> you
> > > > > processed X records. (I would send this update after 10 records or
> add
> > > code
> > > > > that after each % that was done I send back that number)
> > > > > At this time the browser has the total number of records and is
> > > receiving
> > > > > the record number that was processed (10 out of 100 etc...)
> > > > > Then using JavaScript you could feed those values in to DHTML or
> Flash
> > > to
> > > > > graphically do a status bar.
> > > > >
> > > > > Is there another solution? I am sure there is, but it is not
> > impossible.
> > > > >
> > > > > Let me know if you do do this, I would be interested is seeing in
> > > working :)
> > > > >
> > > > > Jay
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Miles Thompson" <milesthompson@sprint.ca>
> > > > > To: "Murph" <murph@murphatnight.com>; "PHP General
> > > > > List"
> > > > > <php-general@lists.php.net>
> > > > > Sent: Friday, December 08, 2000 7:25 AM
> > > > > Subject: Re: [PHP] Progress bar?
> > > > >
> > > > > > If you did one you'd have to fake it. Think about it, the web is
> > > stateless
> > > > > environment, no channel is opened and maintained to the back end,
> and
> > > SQL
> > > > > queries are essentially the same. If a progress bar
> > > > > > displays while a SQL query executes, it's provided by the
database
> > > vendor.
> > > > > >
> > > > > > If you did have feedback from the SQL engine you would need to
> keep
> > > firing
> > > > > new pages to the browser.
> > > > > >
> > > > > > Regards - Miles Thompson
> > > > > >
> > > > > > Murph wrote:
> > > > > >
> > > > > > > Hi!
> > > > > > >
> > > > > > > Has anyone invented a progress bar that displays on a web page
> to
> > > > > entertain the viewer while they wait for a query to finish? I'd be
> > > > > interested in getting a pointer to a snippet of code if you have
it.
> > > > > > >
> > > > > > > Yours,
> > > > > > > Murph
> > > > > > >
> > > > > > > www.murphatnight.com
> > > > > > >
> __________________________________________________________________
> > > > > > > Brian Murphy - 193A Lowell St., Apt. 24 - Methuen, MA 01844 -
> > (978)
> > > > > 725-6654
> > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > PHP General Mailing List (http://www.php.net/)
> > > > > > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> > > > > > For additional commands, e-mail: php-general-help@lists.php.net
> > > > > > To contact the list administrators, e-mail:
> > > php-list-admin@lists.php.net
> > > > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> > > For additional commands, e-mail: php-general-help@lists.php.net
> > > To contact the list administrators, e-mail:
php-list-admin@lists.php.net
> > >
> > >
> >
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> > For additional commands, e-mail: php-general-help@lists.php.net
> > To contact the list administrators, e-mail: php-list-admin@lists.php.net
> >
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net
> For additional commands, e-mail: php-general-help@lists.php.net
> To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>