Long running tasks may be invoked by web clients. In such a
case, the server should return a page for the user agent much
before the tasks's completion in order to provide feedback and
avoid timeouts. Also the long running task should not be
interrupted by the user agent disconnecting. The http_flush() function will send the reply
accumulated thus far to the user agent and then disconnect it. In
effect, this is a generic mechanism for starting an asynchronous
Starting long running tasks may lead to denial of service. To
prevent this we can use status and stop functions to check
processes and kill them if necessary.
We can retrieve the URL, client IP-address, and process status
code for all currently running VSP requests, then use this
information to isolate and eliminate a process.