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:
@@ -535,7 +535,8 @@ optimize_domain() {
|
|||||||
echo ""
|
echo ""
|
||||||
cecho " ${GREEN}a${NC}) Apply all $opt_count recommendations"
|
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[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"
|
cecho " ${RED}n${NC}) Cancel - don't apply any changes"
|
||||||
echo ""
|
echo ""
|
||||||
cecho "${CYAN}─────────────────────────────────────────────────────────────────────${NC}"
|
cecho "${CYAN}─────────────────────────────────────────────────────────────────────${NC}"
|
||||||
@@ -544,9 +545,9 @@ optimize_domain() {
|
|||||||
while true; do
|
while true; do
|
||||||
read -p "Select option: " apply_choice
|
read -p "Select option: " apply_choice
|
||||||
|
|
||||||
if ! [[ "$apply_choice" =~ ^[a1A2nN]$ ]]; then
|
if ! [[ "$apply_choice" =~ ^[a123nNA]$ ]]; then
|
||||||
echo ""
|
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 ""
|
echo ""
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -555,6 +556,7 @@ optimize_domain() {
|
|||||||
|
|
||||||
# Determine which optimizations to apply
|
# Determine which optimizations to apply
|
||||||
local apply_max_children=false
|
local apply_max_children=false
|
||||||
|
local apply_pm_mode=false
|
||||||
local apply_opcache=false
|
local apply_opcache=false
|
||||||
|
|
||||||
# Convert to lowercase for consistent case matching
|
# Convert to lowercase for consistent case matching
|
||||||
@@ -563,12 +565,16 @@ optimize_domain() {
|
|||||||
case "$apply_choice" in
|
case "$apply_choice" in
|
||||||
a)
|
a)
|
||||||
apply_max_children=${opt_available[max_children]:-false}
|
apply_max_children=${opt_available[max_children]:-false}
|
||||||
|
apply_pm_mode=${opt_available[pm_mode]:-false}
|
||||||
apply_opcache=${opt_available[opcache]:-false}
|
apply_opcache=${opt_available[opcache]:-false}
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
apply_max_children=${opt_available[max_children]:-false}
|
apply_max_children=${opt_available[max_children]:-false}
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
|
apply_pm_mode=${opt_available[pm_mode]:-false}
|
||||||
|
;;
|
||||||
|
3)
|
||||||
apply_opcache=${opt_available[opcache]:-false}
|
apply_opcache=${opt_available[opcache]:-false}
|
||||||
;;
|
;;
|
||||||
n)
|
n)
|
||||||
@@ -580,7 +586,7 @@ optimize_domain() {
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
# Check if nothing was selected
|
# 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}"
|
cecho "${YELLOW}No optimizations selected${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Press Enter to continue..."
|
read -p "Press Enter to continue..."
|
||||||
@@ -624,6 +630,34 @@ optimize_domain() {
|
|||||||
fi
|
fi
|
||||||
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
|
# Apply OPcache if selected
|
||||||
if [ "$apply_opcache" = "true" ]; then
|
if [ "$apply_opcache" = "true" ]; then
|
||||||
# Note: OPcache settings are in php.ini, not FPM pool config
|
# Note: OPcache settings are in php.ini, not FPM pool config
|
||||||
|
|||||||
Reference in New Issue
Block a user