togethere.cloud/public_html/cron/README.md

3.9 KiB

🕐 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:

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)

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 SQL
  • archive_matches.php - Skrypt PHP
  • archive_log.txt - Logi wykonania