Когда apache разветвляет процесс для mod-php, как долго он остается живым? Процесс умирает, как только ответ отправлен, или он останется живым, пока браузер не получит полный ответ?
Когда 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>
Апач порождает StartServers
детей автоматически. Эти процессы будут бездействовать до тех пор, пока не поступит запрос. Если дети станут занятыми, он будет порождаться MaxClients
детьми, чтобы справиться с нагрузкой, пытаясь поддерживать MinSpareServers
неработающие дети для получения новых запросов. Как только все успокоится, пустые дети будут убиты, пока не уменьшится количество MaxSpareServers
.
Часть, о которой вы спрашиваете, обрабатывается MaxRequestsPerChild
. При значении 0 это означает, что дети могут жить вечно, что является значением по умолчанию в большинстве установок apache. Если задано что-либо еще, это означает, что каждый дочерний процесс будет принудительно убит и перезапущен, независимо от текущей загрузки, после того, как он обработает это количество запросов.
Более подробную информацию о prefork MPM можно найти здесь: http://httpd.apache.org/docs/2.2/mod/prefork.html.
httpd не разворачивает процесс для mod_php. Он создает для себя процесс, в который встроен mod_php. Ребенок останется в живых, пока не выполнит MaxRequestsPerChild
просьбы. Сам mod_php будет продолжать обрабатывать каждый запрос скрипта PHP до тех пор, пока скрипт не выйдет или не будет превышен срок.