One way to handle this is to use an HTML redirect. This has the added benefit of freeing memory in use by mod_perl processes that would otherwise be used for each waiting client connection.
An outline of how I've planned to handle it (note: I haven't implemented it yet, but plan to soon):
receive request;
if (request has no job_id) {
create new job_id;
start processing external commands (providing job_id);
return an HTTP redirect with a 10 second pause, such as:
<meta http-equiv="REFRESH" content="10;URL=http://sample.com/?id=j
+ob_id">
} else {
if (external commands have completed) {
return results;
} else {
return the HTTP redirect again;
}
}