When apache forks a process for mod-php, how long does it stay alive? Does the process die as soon as the response is sent, or will it stay alive until the browser receives the full response?
When apache forks a process for mod-php, how long does it stay alive? Does the process die as soon as the response is sent, or will it stay alive until the browser receives the full response?
If you're using mod-php, then you're likely using the
prefork
MPM, that spawns child processes to handle requests. The number and lifetime of these children as governed by directives in your mainapache2.conf
(orhttpd.conf
, depending on your distro) file.Look for the part that looks like this (your values may vary):
Apache spawns
StartServers
children automatically. These processes will idle until a request comes in. If children become busy, it will spawn up toMaxClients
children to handle the load, trying to maintainMinSpareServers
idle children to pick up new requests. Once things calm down, idle children will be killed off until the count is down toMaxSpareServers
.The bit you're asking about is handled by
MaxRequestsPerChild
. Set at 0, this means that children can live forever, which is the default value in most apache installations. Set at anything else, it means each child process will be forcibly killed and restarted, regardless of current load, once it has handled that number of requests.More details on the prefork MPM here: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd doesn't fork a process for mod_php. It forks a process for itself, which has mod_php embedded in it. The child will stay alive until it has fulfilled
MaxRequestsPerChild
requests. mod_php itself will keep handling each request for a PHP script until either the script exits or the time limit is exceeded.