Intermediate Page w/ CGI Script

P

Pete Butler

I'm working on a CGI application using Perl. My client would like the
user to get some sort of "processing request" page immediately upon
clicking "Submit", because right now, he occasionally sees a delay
between clicking "Submit" and getting the results page. Is there a
good way to do this with CGI?

The options I've been able to think of all have serious problems.
Giving the user an immediate "thank you" page then processing the data
behind the scenes (as a seperate thread? as a scheduled task?) sucks
because the page the user gets is dependant upon the information
passed in. (Certain data gets a "sorry, not interested" page.)

I thought of making a CGI script that makes a quick-n-dirty "Thank
you!" page that has all the data submitted by the user in hidden form
elements which then submits itself, but that depends on the user
having Javascript enabled, AND would require at least a moderately
sophisticated script to power it, since the data set coming back from
the user will be dynamic based on a few configurable items.

And, of course, both options above require me to fire off a CGI script
in the first place. Since I suspect that the performance issues
driving my client's request are caused by starting CGI scripts when
the server is under load, I suspect we'd go from this scenario:

-Press Submit
-Wait wait wait
-See results page

To this one:

-Press Submit
-Wait wait wait
-See "please wait" page
-Wait wait wait
-See results page

Is there a solution here I'm overlooking? (Short of using mod_perl or
fastcgi to improve performance, which aren't available to me. Or
switching to PHP; it's too late in the game for me to re-write
everything from the ground up.)

Or am I going to have to stick to my guns and insist that it's just a
part of the whole CGI experience, and that the client needs to live
with it?

(And for those of you who like a little garnish of irony, I've been
unable to replicate the performance problems my client is complaining
about in the first place.)

Thanks for your help,
-- Pete Butler
 
A

A. Sinan Unur

(e-mail address removed) (Pete Butler) wrote in
I'm working on a CGI application using Perl. My client would like the
user to get some sort of "processing request" page immediately upon
clicking "Submit", because right now, he occasionally sees a delay
between clicking "Submit" and getting the results page. Is there a
good way to do this with CGI?
http://www.stonehenge.com/merlyn/WebTechniques/col20.html

Or am I going to have to stick to my guns and insist that it's just a
part of the whole CGI experience, and that the client needs to live
with it?

Personally, I would then never do business with you again.
(And for those of you who like a little garnish of irony, I've been
unable to replicate the performance problems my client is complaining
about in the first place.)

That does not mean anything.

Sinan.
 
G

Glenn Jackman

Pete Butler said:
I'm working on a CGI application using Perl. My client would like the
user to get some sort of "processing request" page immediately upon
clicking "Submit", because right now, he occasionally sees a delay
between clicking "Submit" and getting the results page. Is there a
good way to do this with CGI?

If your web server supports it, use a non-parsed headers script
http://www.linux.psu.ru/pub/texts/ebooks/OreillyCD/web/cgi/ch03_08.htm
Then, html will be displayed as the server serves it.
 
A

Alan J. Flavell

If your web server supports it, use a non-parsed headers script

If this was a web servers configuration or CGI group, I would tell you
that Apache doesn't demand the complication of using NPH scripts in
order to support incremental output.

But as it isn't, I suppose I'd better not :-}
 
A

Alan J. Flavell

I'm working on a CGI application using Perl. My client would like the
user to get some sort of "processing request" page immediately upon
clicking "Submit", because right now, he occasionally sees a delay
between clicking "Submit" and getting the results page. Is there a
good way to do this with CGI?

No different in Perl than in any other CGI programming language, and
a requirement typically addressed in CGI FAQs and discussed on CGI
programming group(s). What did you think of the previously-discussed
solutions that you found while researching the topic prior to deciding
to post a question? [hint!]
And, of course, both options above require me to fire off a CGI script
in the first place. Since I suspect that the performance issues
driving my client's request are caused by starting CGI scripts when
the server is under load,

You haven't told us whether the wait is typically 5 seconds or 5
minutes or what. Different solutions might be applicable.
I suspect we'd go from this scenario:

-Press Submit
-Wait wait wait
-See results page

To this one:

-Press Submit
-Wait wait wait
-See "please wait" page
-Wait wait wait
-See results page

Yup, that's very perceptive. The startup overhead might be a
significant part of the whole processing (you haven't told us enough
to be sure).
Is there a solution here I'm overlooking?

Researching FAQs and previous discussions? :-{
(Short of using mod_perl or fastcgi to improve performance, which
aren't available to me. Or switching to PHP; it's too late in the
game for me to re-write everything from the ground up.)

Sometimes, when you rule out all the applicable technical solutions,
you are left with the original problem - as we can see.

<announcement mode=public-service>
In case you hadn't noticed, CGI questions aren't generally welcomed
here (c.l.p.misc) unless they have some specifically Perl content -
and that's irrespective of whether you're programming them _in_ Perl.
perlfaq9 has further pointers.
</>

cheers
 
P

Pete Butler

.. . . and, of course, my sincere thanks to everyone who helped despite
the marginal topicality of my question.

-- Pete Butler
 
R

Randal L. Schwartz

Pete> I'm working on a CGI application using Perl. My client would like the
Pete> user to get some sort of "processing request" page immediately upon
Pete> clicking "Submit", because right now, he occasionally sees a delay
Pete> between clicking "Submit" and getting the results page. Is there a
Pete> good way to do this with CGI?

I've done this in a couple of different ways...

<http://www.stonehenge.com/merlyn/WebTechniques/col20.html>
<http://www.stonehenge.com/merlyn/LinuxMag/col39.html>

print "Just another Perl hacker," # and web whacker...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top