CRITICAL FIXES:
- Line 164: Remove 'local' from memory_reduction variable (global scope)
- Line 173: Remove 'local' from has_traffic variable (global scope)
Issue: 'local' keyword can only be used inside function definitions.
Using 'local' in global scope causes 'local: can only be used in a function'
runtime error and script failure.
RESULTS:
- 2 CRITICAL issues fixed
- Script now runs without global scope errors
ISSUE:
Batch analyzer only flagged domains for optimization when recommended < current
(only reductions). Domains needing INCREASES were marked "OK" even with:
• Critical traffic (73 concurrent requests)
• Severely undersized configuration (5 max_children)
EXAMPLE:
Current: 5, Recommended: 20, Traffic: 73 concurrent
Old: Status "OK" (no change detected)
New: Status "NEEDS OPTIMIZATION" (recognized undersizing)
FIX:
- Flag optimization when recommended != current
- ONLY if change is meaningful:
• Has significant traffic (>= 5 concurrent requests) OR
• Offers significant memory savings (>= 20% reduction)
RATIONALE:
- Domains with critical traffic should be optimized even if it increases max_children
- Undersized configurations are just as problematic as oversized ones
- Users need to see both increases and decreases in optimization recommendations
This ensures the batch analyzer surfaces all actionable optimization opportunities.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Fixed 'local' keyword errors outside function scope
- Added tracking for pm.mode, pm.max_requests, pm.min_spare_servers, pm.max_spare_servers, pm.process_idle_timeout
- Display all pool settings per domain in batch analysis
- Added combined memory capacity check (if ALL pools hit max_children)
- Status indicators for memory safety: CRITICAL/WARNING/CAUTION/HEALTHY
- Complete server-wide big picture analysis in one command
- Sort domains by priority: high-traffic optimization > low-traffic optimization > optimized
- Display traffic indicators: CRITICAL (20+), HIGH (10+), MEDIUM (5+), LOW (<5)
- Helps users focus on domains that matter most (high-traffic + need optimization)
- Uses color coding to make traffic levels visually obvious
- Includes peak concurrent request count in traffic indicator
- Makes it easy to identify which domains to optimize first
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Prompts user to save detailed report after analysis
- Generates formatted text report with full domain breakdown
- Includes server info, domain analysis, summary, and recommendations
- Shows memory impact, traffic data, and optimization potential
- Saves to /tmp with timestamp for easy reference
- Provides actionable recommendations based on findings
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
- Fix line 63 in php-analyzer.sh: Add default value for count variable (integer comparison error)
- Fix line 655 in php-analyzer.sh: Add default value for memory_error_count (integer comparison error)
- Fix line 396 in php-scanner.sh: Replace unsafe eval with safe getent passwd lookup
- Add php-ui.sh: User interface and menu system (18KB, 25+ functions)
- Add php-scanner.sh: Server enumeration system (17KB, 18 functions)
- Add php-action-executor.sh: Optimization execution system (17KB, 20 functions)
- Add php-server-manager.sh: Orchestration framework (21KB, 7 functions)
- Add php-fpm-batch-analyzer.sh: One-shot diagnostic script showing current vs recommended max_children, memory impact, and optimization potential
- Add comprehensive test suite (24 tests)
These fixes resolve "integer expression expected" errors during domain analysis.
Batch analyzer enables users to see domain-by-domain optimization opportunities before applying changes.
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>