150 lines
3.9 KiB
Markdown
150 lines
3.9 KiB
Markdown
# 🕐 CRON Jobs - Dokumentacja
|
|
|
|
## Archiwizacja meczów
|
|
|
|
### Plik: `archive_matches.php`
|
|
|
|
Automatycznie archiwizuje mecze starsze niż 6 miesięcy do tabeli `matches_archive`.
|
|
|
|
### 📋 Konfiguracja CRON
|
|
|
|
#### Opcja 1: cPanel / Plesk (Rekomendowane)
|
|
|
|
1. Zaloguj się do cPanel/Plesk
|
|
2. Znajdź "Cron Jobs" lub "Zadania zaplanowane"
|
|
3. Dodaj nowe zadanie:
|
|
```
|
|
Częstotliwość: Co tydzień (niedziela)
|
|
Godzina: 02:00
|
|
Komenda: php /home/USERNAME/public_html/private_html/cron/archive_matches.php
|
|
```
|
|
|
|
#### Opcja 2: Crontab (Linux)
|
|
|
|
Edytuj crontab:
|
|
```bash
|
|
crontab -e
|
|
```
|
|
|
|
Dodaj linię (niedziela o 2:00):
|
|
```
|
|
0 2 * * 0 /usr/bin/php /path/to/private_html/cron/archive_matches.php
|
|
```
|
|
|
|
Lub codziennie o 2:00:
|
|
```
|
|
0 2 * * * /usr/bin/php /path/to/private_html/cron/archive_matches.php
|
|
```
|
|
|
|
#### Opcja 3: Windows Task Scheduler
|
|
|
|
1. Otwórz "Harmonogram zadań" (Task Scheduler)
|
|
2. Utwórz nowe zadanie:
|
|
- **Wyzwalacz:** Co tydzień, niedziela, 02:00
|
|
- **Akcja:** Uruchom program
|
|
- **Program:** `C:\xampp\php\php.exe` (lub inna ścieżka do PHP)
|
|
- **Argumenty:** `C:\Users\scans\.vscode\OpenGame\private_html\cron\archive_matches.php`
|
|
|
|
### 🧪 Testowanie
|
|
|
|
#### Test 1: Manualne uruchomienie (CLI)
|
|
```bash
|
|
php private_html/cron/archive_matches.php
|
|
```
|
|
|
|
#### Test 2: Przez przeglądarkę (tylko z localhost)
|
|
```
|
|
http://localhost/cron/archive_matches.php
|
|
```
|
|
**UWAGA:** Działa tylko z localhost ze względów bezpieczeństwa!
|
|
|
|
### 📊 Logi
|
|
|
|
Logi są zapisywane w pliku:
|
|
```
|
|
private_html/cron/archive_log.txt
|
|
```
|
|
|
|
Przykład logu:
|
|
```
|
|
[2026-01-27 02:00:01] === START Archiwizacja meczów ===
|
|
[2026-01-27 02:00:01] Połączono z bazą danych
|
|
[2026-01-27 02:00:05] Wynik archiwizacji: Zarchiwizowano 1234 meczów starszych niż 2025-07-27
|
|
[2026-01-27 02:00:05] Statystyki:
|
|
[2026-01-27 02:00:05] - Active: 45678 meczów
|
|
[2026-01-27 02:00:05] - Archived: 123456 meczów
|
|
[2026-01-27 02:00:05] === END Archiwizacja zakończona pomyślnie ===
|
|
```
|
|
|
|
### 🔒 Bezpieczeństwo
|
|
|
|
- ✅ Skrypt działa tylko z CLI lub localhost
|
|
- ✅ Timeout 5 minut (długie operacje)
|
|
- ✅ Logi automatycznie rotowane przy 5MB
|
|
- ✅ Transakcje SQL (bezpieczne usuwanie)
|
|
|
|
### ⚙️ Konfiguracja
|
|
|
|
Domyślne ustawienia:
|
|
- **Wiek archiwizacji:** 6 miesięcy
|
|
- **Timeout:** 300 sekund (5 minut)
|
|
- **Rotacja logów:** przy 5MB
|
|
|
|
Aby zmienić wiek archiwizacji, edytuj procedurę w SQL:
|
|
```sql
|
|
-- W pliku database_archivization.sql zmień:
|
|
SET archive_date = DATE_SUB(NOW(), INTERVAL 6 MONTH);
|
|
-- Na przykład na 3 miesiące:
|
|
SET archive_date = DATE_SUB(NOW(), INTERVAL 3 MONTH);
|
|
```
|
|
|
|
### 🆘 Troubleshooting
|
|
|
|
**Problem:** "Access denied - tylko z CLI lub localhost"
|
|
**Rozwiązanie:** Uruchom przez terminal lub zmień zabezpieczenie w pliku PHP
|
|
|
|
**Problem:** "SQLSTATE[42000]: Syntax error"
|
|
**Rozwiązanie:** Upewnij się że procedura `archive_old_matches()` została utworzona:
|
|
```sql
|
|
CALL archive_old_matches(); -- Test w phpMyAdmin
|
|
```
|
|
|
|
**Problem:** Log nie jest tworzony
|
|
**Rozwiązanie:** Sprawdź uprawnienia zapisu:
|
|
```bash
|
|
chmod 755 private_html/cron/
|
|
chmod 644 private_html/cron/archive_log.txt
|
|
```
|
|
|
|
**Problem:** Cron nie uruchamia się
|
|
**Rozwiązanie:** Sprawdź ścieżkę do PHP:
|
|
```bash
|
|
which php # Linux
|
|
where php # Windows
|
|
```
|
|
|
|
### 📧 Powiadomienia email (opcjonalne)
|
|
|
|
Aby otrzymywać email po archiwizacji, dodaj na końcu pliku PHP:
|
|
```php
|
|
// Wyślij email z raportem
|
|
mail(
|
|
'admin@example.com',
|
|
'Raport archiwizacji meczów',
|
|
"Zarchiwizowano X meczów.\n\nStatystyki:\n...",
|
|
'From: cron@example.com'
|
|
);
|
|
```
|
|
|
|
### 🎯 Rekomendacje
|
|
|
|
- **Mały projekt (<10k meczów/miesiąc):** Uruchamiaj co miesiąc
|
|
- **Średni projekt (10k-100k):** Uruchamiaj co tydzień ✅
|
|
- **Duży projekt (>100k):** Uruchamiaj codziennie
|
|
|
|
### 📚 Powiązane pliki
|
|
|
|
- `database_archivization.sql` - Procedury SQL
|
|
- `archive_matches.php` - Skrypt PHP
|
|
- `archive_log.txt` - Logi wykonania
|