🌩️

Weathercloud Split Scraper Cron

Kører PHP-scraper mod Weathercloud, logger exit-status og roterer log ved 10 MB

📊 Flowdiagram

Weathercloud Split Scraper — Flowdiagram ⏰ cron trigger interval sættes i crontab 📂 cd /var/www/html/vejr 📝 Log: === Start + tidspunkt === 🐘 php weathercloud_scraper_split.php stdout + stderr → weathercloud_cron.log 🔍 Check $? (exit status) ✓ Succes → log OK = 0 ✗ Fejl → log kode ≠ 0 📝 Tom linje til log 📏 Mål logfil (stat) → > 10 MB? 🔄 mv log → log.old + ny log ja nej ✅ exit 0 Legende Hoved-trin Log rotation Fejlhåndtering

📋 Trin-for-trin forklaring

1

Skift til projektmappe

cd /var/www/html/vejr sikrer at logfilen oprettes det rigtige sted. Da LOG_FILE er relativ, er dette afgørende.

2

Log start-tidspunkt

Tilføjer en tydeligt markeret separator med dato og klokkeslæt til weathercloud_cron.log inden PHP-scraperen køres.

3

Kør PHP-scraper

php weathercloud_scraper_split.php eksekveres. Bemærk: scriptet bruger bare php og ikke fuld sti — sørg for at PHP er i PATH i cron-miljøet, eller brug /usr/bin/php.

4

Tjek exit-status ($?)

Scriptet tjekker om PHP-scraperen lykkedes. $? -eq 0 = succes → logger ✓. Enhver anden kode = fejl → logger ✗ med fejlkoden. Dette er det eneste script i serien der eksplicit logger scraper-status.

5

Log rotation ved 10 MB

Bruger stat til at hente filstørrelse i bytes (med fallback mellem macOS og Linux syntaks). Over 10 MB → gammel log omdøbes til .log.old og en ny log startes. Behold kun én generation.

🔍 Exit-status håndtering

Dette script er det eneste i serien der eksplicit logger PHP-scraperens succes/fejl-status:

Exit 0
Scrape completed
successfully
Exit ≠ 0
Scrape failed with
error code [N]

OBS $? gemmes ikke i en variabel — det læses direkte i if-betingelsen, og scriptet slutter altid med exit 0 uanset scraper-fejl.

📏 Log rotation – størrelsebaseret

Grænse: 10 MB (10.485.760 bytes)

~6.5 MB
05 MB10 MB → rotation
# Hvad der sker ved rotation:
mv weathercloud_cron.log weathercloud_cron.log.old
echo "Log rotated at 2025-02-22 14:00:01" > weathercloud_cron.log

# stat-kommandoen er cross-platform:
stat -f%z fil # macOS
stat -c%s fil # Linux
→ 2>/dev/null || fallback til anden syntaks

⚙️ Konfiguration

ParameterVærdi
Arbejdsmappe/var/www/html/vejr
Scraperweathercloud_scraper_split.php
Logfilweathercloud_cron.log (relativ)
Backup-logfilweathercloud_cron.log.old
Log max størrelse10 MB (10.485.760 bytes)
Generationer2 (aktiv + .old)

⏰ Cron-opsætning

# Rediger crontab:
crontab -e

# Eksempler på intervaller:
*/15 * * * * /var/www/html/vejr/weathercloud_cron.sh
# ↑ Hvert 15. minut (anbefalet)

*/30 * * * * /var/www/html/vejr/weathercloud_cron.sh
# ↑ Hvert 30. minut

# Husk: brug fuld PHP-sti i cron!
# Rediger scriptet: php → /usr/bin/php

💡 Notes

PATH php uden fuld sti kan fejle i cron — brug /usr/bin/php
Rotation Kun 1 backup-generation (.old) — ældre historik mistes
Cross-OS stat fallback håndterer både macOS og Linux
Exit Scriptet returnerer altid exit 0 — fejl fra scraper logges men eskaleres ikke

📝 Log-output eksempel

=== 2025-02-22 14:00:01 - Weathercloud Split Scraper Start ===
Henter data fra Weathercloud...
Station: Errindlev · Temp: 4.1°C · Luftfugt: 88% · Vind: 7.2 m/s
Data gemt til database: vejr_weathercloud
✓ Scrape completed successfully

=== 2025-02-22 14:15:01 - Weathercloud Split Scraper Start ===
Henter data fra Weathercloud...
✗ Scrape failed with error code 1

Log rotated at 2025-02-22 14:30:01