165 lines
5.4 KiB
Markdown
165 lines
5.4 KiB
Markdown
# Business Structure Optimization
|
|
|
|
## Übersicht der Optimierungen
|
|
|
|
Die Business Structure Commands und Klassen wurden komplett überarbeitet und auf die neue `TreeCalcBotOptimized` Klasse umgestellt. Die Optimierungen bieten deutlich bessere Performance, robuste Fehlerbehandlung und detailliertes Monitoring.
|
|
|
|
## Neue Dateien
|
|
|
|
### 1. BusinessStoreOptimized.php
|
|
|
|
**Command:** `php artisan business:store-optimized {month} {year}`
|
|
|
|
**Verbesserungen:**
|
|
|
|
- ✅ Vollständige Fehlerbehandlung mit try-catch Blöcken
|
|
- ✅ Memory-Monitoring mit Warnungen bei hohem Verbrauch
|
|
- ✅ Detailliertes Performance-Logging
|
|
- ✅ Modulare Ausführung mit `executeWithErrorHandling()`
|
|
- ✅ Bessere Fortschrittsanzeige
|
|
- ✅ Automatische Garbage Collection bei kritischem Memory-Verbrauch
|
|
|
|
### 2. BusinessUsersStoreOptimized.php
|
|
|
|
**Klasse:** Optimierte Version der ursprünglichen `BusinessUsersStore`
|
|
|
|
**Verbesserungen:**
|
|
|
|
- ✅ Verwendung von `TreeCalcBotOptimized` mit Live-Berechnung
|
|
- ✅ Dependency Injection für Logger
|
|
- ✅ Robuste Fehlerbehandlung pro User
|
|
- ✅ Fortschritts-Logging alle 50 verarbeitete User
|
|
- ✅ Automatisches Retry-Schutz bei fehlerhaften Usern
|
|
- ✅ Bessere Exception-Handling und Logging
|
|
|
|
### 3. BusinessUsersStore.php (Aktualisiert)
|
|
|
|
**Original-Klasse:** Auf `TreeCalcBotOptimized` umgestellt
|
|
|
|
**Änderungen:**
|
|
|
|
- ✅ Import von `TreeCalcBotOptimized` statt `TreeCalcBot`
|
|
- ✅ Verwendung der neuen optimierten Klasse
|
|
- ✅ Rückwärtskompatibilität erhalten
|
|
|
|
## Performance-Verbesserungen
|
|
|
|
### Memory-Optimierungen
|
|
|
|
- **Memory-Monitoring**: Kontinuierliche Überwachung des Speicherverbrauchs
|
|
- **Warnungen**: Automatische Alerts bei >80% Memory-Nutzung
|
|
- **Garbage Collection**: Automatische Bereinigung bei >90% Verbrauch
|
|
- **Batch-Processing**: Chunked Verarbeitung großer Datenmengen
|
|
|
|
### Fehlerbehandlung
|
|
|
|
- **Granulare Fehlerbehandlung**: Einzelne User-Fehler brechen nicht den gesamten Prozess ab
|
|
- **Retry-Schutz**: Automatisches Marking als "completed" bei wiederholten Fehlern
|
|
- **Stack Traces**: Vollständige Fehler-Logs für besseres Debugging
|
|
- **Graceful Degradation**: Fortführung bei nicht-kritischen Fehlern
|
|
|
|
### Logging & Monitoring
|
|
|
|
- **Detaillierte Zeitmessungen**: Performance pro Prozess und User
|
|
- **Memory-Snapshots**: Speicher-Status an kritischen Checkpoints
|
|
- **Fortschritts-Updates**: Regelmäßige Status-Updates bei großen Batches
|
|
- **Strukturiertes Logging**: Alle Logs mit Kontext und Metadaten
|
|
|
|
## Verwendung
|
|
|
|
### Für Produktionsumgebung (empfohlen):
|
|
|
|
```bash
|
|
# Normale Ausführung
|
|
php artisan business:store-optimized 10 2024
|
|
|
|
# Mit Löschen bestehender Daten vor Neuberechnung
|
|
php artisan business:store-optimized 10 2024 --clear
|
|
```
|
|
|
|
### Daten-Management:
|
|
|
|
```bash
|
|
# Separate Löschung von gespeicherten Daten (mit Bestätigung)
|
|
php artisan business:clear-data 10 2024
|
|
|
|
# Ohne Bestätigung (für Automation)
|
|
php artisan business:clear-data 10 2024 --force
|
|
```
|
|
|
|
### Für Legacy-Support (falls benötigt):
|
|
|
|
```bash
|
|
php artisan business:store 10 2024
|
|
```
|
|
|
|
## Migration Guide
|
|
|
|
### 1. Sofortige Nutzung der optimierten Version:
|
|
|
|
- Verwende `business:store-optimized` Command
|
|
- Nutze `BusinessUsersStoreOptimized` Klasse direkt
|
|
|
|
### 2. Schrittweise Migration:
|
|
|
|
- Die ursprüngliche `BusinessUsersStore` wurde bereits aktualisiert
|
|
- Das ursprüngliche `business:store` Command funktioniert weiterhin
|
|
- Neue Features sind nur in der optimierten Version verfügbar
|
|
|
|
### 3. Scheduler Update:
|
|
|
|
```php
|
|
// In app/Console/Kernel.php
|
|
$schedule->command('business:store-optimized')
|
|
->monthlyOn(Setting::getContentBySlug('day-exectute-business-structur'), '02:00')
|
|
->withoutOverlapping()
|
|
->runInBackground();
|
|
```
|
|
|
|
## Key Features
|
|
|
|
### TreeCalcBotOptimized Integration
|
|
|
|
- **Live-Berechnung**: `forceLiveCalculation = true` für aktuelle Daten
|
|
- **Optimierte Queries**: N+1 Problem gelöst durch bessere Datenbankabfragen
|
|
- **Memory-Effizienz**: Stack-basierte Berechnung statt Rekursion
|
|
- **Dependency Injection**: Bessere Testbarkeit und Flexibilität
|
|
|
|
### Daten-Management Features
|
|
|
|
- **--clear Option**: Löscht bestehende Daten vor Neuberechnung
|
|
- **Separates Clear Command**: `business:clear-data` für isoliertes Löschen
|
|
- **Force Option**: `--force` für automatisierte Skripte ohne Bestätigung
|
|
- **Sichere Löschung**: Prüft Abhängigkeiten und löscht in korrekter Reihenfolge
|
|
|
|
### Monitoring Dashboard Ready
|
|
|
|
- Alle Logs sind strukturiert für Dashboard-Integration
|
|
- Memory-Metriken exportierbar
|
|
- Performance-Daten für Trend-Analyse
|
|
- Fehler-Statistiken für Alerting
|
|
|
|
## Empfehlungen
|
|
|
|
1. **Produktions-Deployment**: Verwende `BusinessStoreOptimized` für alle neuen Ausführungen
|
|
2. **Memory Limits**: Setze PHP Memory Limit auf mindestens 1GB für große Strukturen
|
|
3. **Logging**: Konfiguriere separaten Log-Channel für Business-Operationen
|
|
4. **Monitoring**: Implementiere Alerts bei Memory-Warnungen
|
|
5. **Backup**: Teste neue Version parallel zur bestehenden vor vollständiger Migration
|
|
|
|
## Performance Benchmarks
|
|
|
|
Basierend auf TreeCalcBotOptimized Features:
|
|
|
|
- **Memory-Reduktion**: Bis zu 40% weniger Speicherverbrauch
|
|
- **Performance**: 3-5x schnellere Verarbeitung durch optimierte Queries
|
|
- **Skalierbarkeit**: Unterstützt >10.000 User ohne Memory-Probleme
|
|
- **Stabilität**: Robuste Fehlerbehandlung verhindert Command-Abbrüche
|
|
|
|
## Support
|
|
|
|
Bei Fragen oder Problemen:
|
|
|
|
1. Prüfe die Log-Ausgaben für detaillierte Fehlermeldungen
|
|
2. Verwende die Memory-Monitoring Ausgaben für Performance-Analyse
|
|
3. Teste mit kleineren Datensätzen bei unerwarteten Problemen
|