| .. | ||
| archive_matches.php | ||
| process_rewards_jobs.php | ||
| README.md | ||
🕐 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)
- Zaloguj się do cPanel/Plesk
- Znajdź "Cron Jobs" lub "Zadania zaplanowane"
- 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:
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
- Otwórz "Harmonogram zadań" (Task Scheduler)
- 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)
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:
-- 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:
CALL archive_old_matches(); -- Test w phpMyAdmin
Problem: Log nie jest tworzony Rozwiązanie: Sprawdź uprawnienia zapisu:
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:
which php # Linux
where php # Windows
📧 Powiadomienia email (opcjonalne)
Aby otrzymywać email po archiwizacji, dodaj na końcu pliku 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 SQLarchive_matches.php- Skrypt PHParchive_log.txt- Logi wykonania