# Cron Runbook

Timestamps UTC tutulur. Tum cron scriptleri `0` ile basari, `1` ile hata doner.

Dakikalik:

```bash
* * * * * /usr/bin/php /path/to/web/scripts/cron_cleanup.php
```

Saatlik:

```bash
5 * * * * /usr/bin/php /path/to/web/scripts/cron_demo_expire.php
15 * * * * /usr/bin/php /path/to/web/scripts/cron_demo_hard_delete.php
```

Gunluk:

```bash
10 2 * * * /usr/bin/php /path/to/web/scripts/cron_backup.php
20 2 * * * /usr/bin/php /path/to/web/scripts/cron_license_audit.php
```

Beklenen cikti:

- `cron_cleanup.php`: 60 saniyeden uzun suredir heartbeat almayan web session/tab kayitlarini kapatir, eski session/rate-limit/nonce verisini temizler ve expired token revoke eder.
- `cron_demo_expire.php`: suresi dolan 1 haftalik demo `demo_licenses` ve ilgili customer lisanslarini `expired` yapar.
- `cron_demo_hard_delete.php`: `expired + 48 saat` gecmis demo customer kayitlarini (master+tenant+db user+backup dosyalari) tamamen temizler.
- `cron_backup.php`: `BACKUP_AUTO` ozelligi acik aktif musteriler icin profil bazli gunluk auto backup uretir, retention 30 dosyayi korur.
- `cron_license_audit.php`: expiry/demo durumuna gore `license_status` alanini duzeltir.

Job kaydi:

- Her script `job_runs` tablosuna `running -> ok/error` akisini yazar.
- Hata halinde STDERR yerine process exit code `1` kullanilir; stdout'ta hata ozeti gorunur.


