in reply to mod_perl, prefork mpm and alarms
I don't know if you can call sleep (since that might rely on an underlying SIGALRM) - it's worth trying to see if you can) and if not you can (ab)use good old select undef, undef, undef, x.y; to sleep.
You could then have your child process create a file with the desired output when it is done (note that you don't simply want to check for the existence of the output file - you could end up with a partially-written file. Have the child process create into a temp file and then rename (which is atomic) to the output file).
Since you are periodically waking up (say every 1 sec) you can implement your timeout via a counter. On timeout, you can nuke the child process, print an apologetic page, remove the temp file and get on with life.
Not very nice, I know, but waking once a second isn't a burdensome operation and if it's a probably-long-running task, you probably don't need a greater resolution than that.
|
|---|