Hi, I've created a meta-search that prints out status messages to the browser as it receives responses from the servers it is searching by setting $|=1 and using $r->print. It runs as a mod_perl handler. I'm running apache 1.3.24 and mod_perl 1.26 on Linux.
I'm finding that my web app has slowed down radically since I started doing this. I've tracked it down to the $r->print statements. I suspect that each statement is waiting for acknowledgement from the client before it will continue execution. Sometimes children are tied up for 2 minutes! I suspect these may be where the client has dropped its dialup connection and $r->print is waiting for acknowledgement of a packet. Has anyone else had this problem? I've set httpd.conf's Timeout setting to 5 seconds as a temporary fix. As I understand it, this will affect the amount of time perl waits before triggering soft_timeout or hard_timeout when doing $r->print operations? I'd like to somehow send data to the client and have execution continue until the end of a time critical section, after which it will wait for acknowledgement of all data that was sent and if that is not received within X seconds, kill the connection and return OK. The only way I can think of doing this is to get the client socket connection, temporarily change it to non blocking, do a send on it, finish the piece of code, and then change it back to non-blocking once I've confirmed the data was sent correctly. I'm afraid (very afraid) that this will break apache or mod_perl somehow. Does this sound like a workable solution? My C isn't too hot, so I'll be coding the entire thing in Perl and running it as part of the handler. Is there a better or easier way to do this? thanks, ~mark http://www.workzoo.com/ <[EMAIL PROTECTED]>