Implement PM mode optimization (STATIC/DYNAMIC/ONDEMAND) for Option 4

- Add apply_pm_mode selection logic
- Display PM mode as separate option (option 2) in optimization menu
- Apply pm, pm.min_spare_servers, and pm.max_spare_servers settings
- Uses improved algorithm recommendations for DYNAMIC/ONDEMAND modes
- Includes min_spare and max_spare configuration for non-STATIC modes
- Now applies full set of recommendations from calculator, not just max_children

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
cschantz
2026-02-17 23:05:12 -05:00
parent 182f74ae4b
commit b3c60f9c1e
+38 -4
View File
@@ -535,7 +535,8 @@ optimize_domain() {
echo ""
cecho " ${GREEN}a${NC}) Apply all $opt_count recommendations"
[ "${opt_available[max_children]}" = "true" ] && cecho " ${GREEN}1${NC}) Apply max_children optimization only"
[ "${opt_available[opcache]}" = "true" ] && cecho " ${GREEN}2${NC}) Apply OPcache optimization only"
[ "${opt_available[pm_mode]}" = "true" ] && cecho " ${GREEN}2${NC}) Apply PM mode optimization only"
[ "${opt_available[opcache]}" = "true" ] && cecho " ${GREEN}3${NC}) Apply OPcache optimization only"
cecho " ${RED}n${NC}) Cancel - don't apply any changes"
echo ""
cecho "${CYAN}─────────────────────────────────────────────────────────────────────${NC}"
@@ -544,9 +545,9 @@ optimize_domain() {
while true; do
read -p "Select option: " apply_choice
if ! [[ "$apply_choice" =~ ^[a1A2nN]$ ]]; then
if ! [[ "$apply_choice" =~ ^[a123nNA]$ ]]; then
echo ""
cecho "${RED}Invalid selection. Please enter a, 1, 2, or n${NC}"
cecho "${RED}Invalid selection. Please enter a, 1, 2, 3, or n${NC}"
echo ""
continue
fi
@@ -555,6 +556,7 @@ optimize_domain() {
# Determine which optimizations to apply
local apply_max_children=false
local apply_pm_mode=false
local apply_opcache=false
# Convert to lowercase for consistent case matching
@@ -563,12 +565,16 @@ optimize_domain() {
case "$apply_choice" in
a)
apply_max_children=${opt_available[max_children]:-false}
apply_pm_mode=${opt_available[pm_mode]:-false}
apply_opcache=${opt_available[opcache]:-false}
;;
1)
apply_max_children=${opt_available[max_children]:-false}
;;
2)
apply_pm_mode=${opt_available[pm_mode]:-false}
;;
3)
apply_opcache=${opt_available[opcache]:-false}
;;
n)
@@ -580,7 +586,7 @@ optimize_domain() {
esac
# Check if nothing was selected
if [ "$apply_max_children" = "false" ] && [ "$apply_opcache" = "false" ]; then
if [ "$apply_max_children" = "false" ] && [ "$apply_pm_mode" = "false" ] && [ "$apply_opcache" = "false" ]; then
cecho "${YELLOW}No optimizations selected${NC}"
echo ""
read -p "Press Enter to continue..."
@@ -624,6 +630,34 @@ optimize_domain() {
fi
fi
# Apply PM mode if selected (STATIC/DYNAMIC/ONDEMAND)
if [ "$apply_pm_mode" = "true" ]; then
if [ -n "$pool_config" ] && [ -f "$pool_config" ]; then
if [ -n "$improved_pm_mode" ]; then
# Apply pm mode
if modify_fpm_pool_setting "$pool_config" "pm" "$improved_pm_mode" >/dev/null 2>&1; then
cecho " ${GREEN}${NC} Set pm = $improved_pm_mode"
# For DYNAMIC and ONDEMAND modes, also set min/max spare servers
if [[ "$improved_pm_mode" == "dynamic" ]] || [[ "$improved_pm_mode" == "ondemand" ]]; then
if modify_fpm_pool_setting "$pool_config" "pm.min_spare_servers" "$improved_min_spare" >/dev/null 2>&1; then
cecho " ${GREEN}${NC} Set pm.min_spare_servers = $improved_min_spare"
fi
if modify_fpm_pool_setting "$pool_config" "pm.max_spare_servers" "$improved_max_spare" >/dev/null 2>&1; then
cecho " ${GREEN}${NC} Set pm.max_spare_servers = $improved_max_spare"
fi
fi
changes_made=$((changes_made + 1))
else
cecho " ${RED}${NC} Failed to set pm mode"
changes_failed=$((changes_failed + 1))
fi
fi
fi
fi
# Apply OPcache if selected
if [ "$apply_opcache" = "true" ]; then
# Note: OPcache settings are in php.ini, not FPM pool config