Когда apache разветвляет процесс для mod-php, как долго он остается в живых? Умирает ли процесс, как только будет отправлен ответ, или он останется в живых, пока браузер не получит полный ответ?
Если вы используете mod-php, вы, вероятно, используете prefork
MPM, который порождает дочерние процессы для обработки запросов. Количество и продолжительность жизни этих детей, как указано в директивах вашего основного apache2.conf
(или httpd.conf
, в зависимости от вашего дистрибутива).
Найдите часть, которая выглядит так (ваши значения могут отличаться):
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
Apache нерестится StartServers
дети автоматически. Эти процессы будут бездействовать до тех пор, пока не поступит запрос. Если дети станут занятыми, они будут появляться до MaxClients
дети справляются с нагрузкой, стараются поддерживать MinSpareServers
праздные дети, чтобы подобрать новые запросы. Как только все утихнет, праздные дети будут убиты, пока счет не опустится до MaxSpareServers
.
То, о чем вы спрашиваете, обрабатывается MaxRequestsPerChild
. Значение 0 означает, что дети могут жить вечно, что является значением по умолчанию в большинстве установок apache. Если установить что-либо еще, это означает, что каждый дочерний процесс будет принудительно завершен и перезапущен, независимо от текущей нагрузки, после того, как он обработает это количество запросов.
Подробнее о префорке MPM здесь: http://httpd.apache.org/docs/2.2/mod/prefork.html
httpd не разветвляет процесс для mod_php. Он формирует для себя процесс, в который встроен mod_php. Ребенок останется в живых, пока не выполнит MaxRequestsPerChild
Запросы. Сам mod_php будет обрабатывать каждый запрос PHP-скрипта до тех пор, пока скрипт не завершится или не будет превышен лимит времени.