perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joel Richard <p...@joelrichard.com>
Subject Re: AJAX pseudo-push
Date Thu, 12 Nov 2009 19:49:26 GMT
I may be off base, but I think this technique would be ineffective  
since the server process would be kept busy with an open connection to  
the browser. Eventually you'll run out of processes what with all the  
clients that end up waiting for something to happen. HTTP is a pull  
protocol. :)

The best that I can think of is some sort of queue system (like a  
message queue?) would be more appropriate to allow the browser to poll  
the server periodically to see if the info is available. Once the info  
becomes available, then the server can send it to the browser.  
Thousands of light requests are better than hundreds of heavy ones.

But it seems to me that you're leaning towards some daemon that runs  
in the background on the server, generating long-running responses to  
requests that come from the server. This is close to what you  
described with request A and B, but I'd have the actual request  
handled by another daemon.

I can get into further detail and speculation, but maybe we'll leave  
that as homework.

--Joel


On Nov 12, 2009, at 1:53 PM, Nicolas George wrote:

> Hi.
>
> There is an increasingly popular technique to emulate server- 
> initiated push
> over HTTP. I'm sure everyone here knows it well, but for the sake of
> completeness: the clients sends a XMLHttpRequest to the server in the
> background; the server does not answer it immediately, but keeps it  
> for
> later when there is actually something to say to the client; if the  
> request
> timeouts, the client re-sends it.
>
> I am wondering if this technique is usable with Apache in general and
> mod_perl in particular.
>
> The obvious solution is to have the request handler sleep until it has
> something to answer does not work, since it requires a worker thread  
> and a
> perl interpreter for each waiting client, and perl interpreters are  
> few and
> expensive.
>
> The ideal solution would be if some part of the request handler  
> could put
> the current request (A) "on hold". Later, the handler for another  
> request
> (B) could retrieve the request A and generate an answer for it, or  
> at least
> wake it up.
>
> Is something like this possible with Apache and mod_perl?
>
> Regards,
>
> -- 
>  Nicolas George


Mime
View raw message