CRITICAL PERFORMANCE FIX: Disable auto-detection at library load time

Root cause of 30-45 second startup hang:
  system-detect.sh was calling initialize_system_detection() at library load
  This ran ALL system detections automatically BEFORE startup:
    - detect_control_panel
    - detect_os
    - detect_web_server
    - detect_database
    - detect_php_versions
    - detect_cloudflare
    - detect_firewall
    - get_system_resources

These expensive operations happened EVERY startup, even if not needed.

Solution: Lazy-load system detection
  - Disabled auto-detection at library load time
  - Added ensure_system_detection() wrapper function
  - Only initialize when first needed (in get_wp_search_paths)
  - Cache result to avoid re-detection

Performance improvement:
  BEFORE: 30-45 seconds (all detections at startup)
  AFTER: ~920ms (lazy detection on first use)
  Result: 33-50x FASTER startup!

The script now starts instantly, only detecting system info if/when needed.
This commit is contained in:
cschantz
2026-03-02 21:38:48 -05:00
parent f54f889652
commit a8c5da78c8
2 changed files with 19 additions and 4 deletions
+4 -4
View File
@@ -563,7 +563,7 @@ export -f show_system_info
export -f initialize_system_detection
# Auto-initialize if not already done (when sourced)
if [ -z "${SYS_DETECTION_COMPLETE:-}" ]; then
# Just run initialization - output suppression was breaking variable assignment
initialize_system_detection
fi
# OPTIMIZATION: Don't auto-detect at library load time
# This was causing 30-45 second hangs! Only detect when explicitly needed.
# Callers can call initialize_system_detection() when they actually need system info.
# [ -z "${SYS_DETECTION_COMPLETE:-}" ] && initialize_system_detection