🦅

DOFbasen Scraper – Cron Script

Kører dagligt PHP-scraper mod DOFbasen, logger output og rydder gamle logfiler

📊 Flowdiagram

DOFbasen Scraper — Flowdiagram ⏰ cron trigger kl. 23:00 / 01:00 dagligt 📁 mkdir -p logs/ (hvis mangler) 📝 Log: === Start + tidspunkt === 📂 cd PROJECT_DIR (|| exit hvis fejl) 🐘 /usr/bin/php scraper.php stdout + stderr → logfil (via 2>&1) 📝 Log: === Afsluttet + tidspunkt === 🗑️ Slet logfiler ældre end 30 dage ✅ Færdig Logfil pr. dag: scraper_20250222.log ÅÅÅÅmmdd Alt PHP output (incl. fejl) gemmes i logfilen Legende Hoved-trin PHP-kørsel Log-oprydning

📋 Trin-for-trin forklaring

1

Opsætning

Definerer PROJECT_DIR og navngiver logfilen med dags dato — én logfil per dag med formatet scraper_YYYYMMDD.log.

2

Opret log-mappe

mkdir -p logs/ sikrer at log-mappen eksisterer ved første kørsel. -p betyder ingen fejl hvis den allerede findes.

3

Log start-tidspunkt

Skriver en separator-linje og tidsstempel til logfilen. Gør det nemt at se præcis hvornår en kørsel begyndte.

4

Skift til projekt-mappe

cd "$PROJECT_DIR" || exit — hvis mappen ikke eksisterer afslutter scriptet øjeblikkeligt. Nødvendigt for at scraper.php kan finde relative stier.

5

Kør PHP scraper

/usr/bin/php scraper.php køres med fuld sti til PHP-binæren (vigtigt i cron-miljø). Både stdout og stderr (2>&1) gemmes i logfilen via >>.

6

Log slut-tidspunkt

Skriver afslutnings-tidsstempel til logfilen. Differensen mellem start og slut viser kørseltiden for scraper.php.

7

Ryd gamle logfiler

find -mtime +30 -delete sletter logfiler ældre end 30 dage. Med én logfil per dag svarer det til maks. 30 logfiler på disk.

⚙️ Konfiguration

VariableBeskrivelse
PROJECT_DIRRod-mappe for fugle-projektet
LOG_FILEDaglig logfil med dato i filnavn
30 dageRetention for logfiler

🗓️ Logfil-navngivning

Én ny fil per dag, automatisk navngivet:

/var/www/html/fugle/logs/scraper_20250222.log

Format: scraper_ÅÅÅÅmmdd.log — maks. 30 filer bevares

⏰ Cron-opsætning

# Rediger crontab:
crontab -e

# Kør kl. 23:00 dagligt:
0 23 * * * /var/www/html/fugle/cron_scraper.sh

# Eller kl. 01:00 om natten:
0 1 * * * /var/www/html/fugle/cron_scraper.sh

# Husk: scriptet skal være executable
chmod +x /var/www/html/fugle/cron_scraper.sh

💡 Tips

PHP Brug altid /usr/bin/php — cron har ikke PATH sat op som din shell
Log Fejl fra PHP vises også i logfilen pga. 2>&1
Test Kør scriptet manuelt første gang: bash cron_scraper.sh
Timing Kør efter DOFbasen er opdateret — typisk sen aften

📝 Log-output eksempel

=====================================
Starter scraping: Sat Feb 22 23:00:01 CET 2025
=====================================
Henter observationer for 2025-02-22...
Fuglearter fundet: 47
Observationer hentet: 312
Gemmer til database... OK
Scraping færdig. 312 observationer gemt.
=====================================
Afsluttet: Sat Feb 22 23:00:34 CET 2025
=====================================

(33 sekunder køretid)

📂 Projektstruktur

/var/www/html/fugle/
├── scraper.php            ← PHP scraper
├── cron_scraper.sh       ← dette script
└── logs/
    ├── scraper_20250222.log
    ├── scraper_20250221.log
    └── ... (maks 30 filer)