upskill-event-manager/scripts/build-consolidated-css.php
bengizmo 1e3939122e feat: Add comprehensive performance monitoring and optimization systems
Performance Improvements:
- Created CSS consolidation build process with 87KB combined file
- Reduces HTTP requests from 20+ CSS files to 1 consolidated file
- Added build script for automated CSS optimization

Background Job System:
- Implemented HVAC_Background_Jobs class with WordPress cron integration
- Supports geocoding batches, CSV imports, profile migrations, cache warming
- Queue management with priority, retry logic, and failure handling
- AJAX endpoints for job status monitoring and cancellation

Database Query Monitoring:
- Added HVAC_Query_Monitor for development and performance analysis
- Tracks slow queries (>0.1s), execution times, and memory usage
- Generates optimization recommendations automatically
- Admin interface for query analysis and debugging
- WP-CLI integration for command-line monitoring

Technical Details:
- Background jobs process 5 per batch with 3 retry attempts
- Query monitor logs only HVAC plugin queries to reduce noise
- Consolidated CSS maintains dependency order and includes 7 core files
- All systems include proper error handling and logging integration

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-06 17:18:50 -03:00

105 lines
No EOL
3.1 KiB
PHP

<?php
/**
* CSS Consolidation Build Script
*
* Combines frequently used HVAC CSS files into a single consolidated file
* for improved performance by reducing HTTP requests.
*/
// Ensure this runs only from CLI
if (php_sapi_name() !== 'cli') {
die('This script must be run from command line');
}
// Define base paths
$plugin_dir = dirname(__DIR__);
$css_dir = $plugin_dir . '/assets/css';
$consolidated_file = $css_dir . '/hvac-consolidated.css';
// Core CSS files to consolidate (in order of dependency)
$core_files = [
'hvac-community-events.css',
'hvac-page-templates.css',
'hvac-layout.css',
'hvac-common.css'
];
// Optional CSS files that are commonly loaded together
$common_files = [
'hvac-dashboard.css',
'hvac-trainer-profile.css',
'hvac-certificates.css'
];
/**
* Consolidate CSS files
*/
function consolidate_css_files($css_dir, $files, $output_file) {
$consolidated_content = "/* HVAC Consolidated CSS - Generated on " . date('Y-m-d H:i:s') . " */\n\n";
$total_size = 0;
$files_processed = 0;
foreach ($files as $file) {
$file_path = $css_dir . '/' . $file;
if (!file_exists($file_path)) {
echo "Warning: File not found: $file\n";
continue;
}
$content = file_get_contents($file_path);
if ($content === false) {
echo "Error: Could not read file: $file\n";
continue;
}
// Add file header comment
$consolidated_content .= "/* === $file === */\n";
$consolidated_content .= $content;
$consolidated_content .= "\n\n";
$size = filesize($file_path);
$total_size += $size;
$files_processed++;
echo "Processed: $file (" . number_format($size) . " bytes)\n";
}
// Write consolidated file
$result = file_put_contents($output_file, $consolidated_content);
if ($result === false) {
echo "Error: Could not write consolidated file: $output_file\n";
return false;
}
$final_size = filesize($output_file);
$savings = max(0, $total_size - $final_size);
$compression_ratio = $total_size > 0 ? (($savings / $total_size) * 100) : 0;
echo "\n=== Consolidation Complete ===\n";
echo "Files processed: $files_processed\n";
echo "Original total size: " . number_format($total_size) . " bytes\n";
echo "Consolidated size: " . number_format($final_size) . " bytes\n";
echo "Space savings: " . number_format($savings) . " bytes (" . number_format($compression_ratio, 1) . "%)\n";
echo "Output file: $output_file\n";
return true;
}
// Main execution
echo "Starting CSS consolidation...\n\n";
// Consolidate core files
$all_files = array_merge($core_files, $common_files);
$success = consolidate_css_files($css_dir, $all_files, $consolidated_file);
if ($success) {
echo "\nCSS consolidation completed successfully!\n";
echo "To use consolidated CSS, ensure no HVAC_CSS_DEBUG constant is defined.\n";
echo "The system will automatically detect and use the consolidated file.\n";
} else {
echo "\nCSS consolidation failed!\n";
exit(1);
}