# Cron Kurulum Rehberi — İstanbul (GMT+3) Gece 00:00

Sunucu saat dilimi farklı olsa bile görev **İstanbul saatiyle gece 00:00**'da çalışabilir.

---

## Yöntem 1 — Önerilen (Windows): Saatlik tetikleyici + PHP kontrolü

Sunucu saatine güvenmek yerine görev **her saat başı** çalışır; PHP `Europe/Istanbul` ile gece yarısını kontrol eder.

### Görev Zamanlayıcı ayarı

1. **Görev Zamanlayıcı** → Yeni Görev
2. **Tetikleyici:** Günlük değil → **Her gün, tekrarla: 1 saat**
   - Başlangıç: herhangi bir saat (örn. 00:00)
3. **Eylem:**
   ```
   Program: c:\xampp\php\php.exe
   Bağımsız değişkenler: c:\xampp\htdocs\cron\istanbul_gece_yarisi.php
   ```
4. Script yalnızca İstanbul **00:00–00:04** arasında asıl işi yapar; diğer saatlerde sessizce çıkar.

### Neden 00:00–00:04?

Saatlik tetikleyici tam 00:00:00'da gecikebilir. 5 dakikalık pencere kaçırmayı önler. Aynı gün iki kez çalışmaması için `storage/` klasöründe kilitleme dosyası kullanılır.

---

## Yöntem 2 — Linux: CRON_TZ (sunucu TZ değiştirmeden)

Linux crontab sunucu saat diliminden bağımsız olarak belirli TZ kullanabilir:

```cron
CRON_TZ=Europe/Istanbul
0 0 * * * /usr/bin/php /var/www/htdocs/cron/arama_kayitlari.php >> /var/log/arama_cron.log 2>&1
```

Bu satır **İstanbul gece 00:00**'da doğrudan `arama_kayitlari.php` çalıştırır; ara kontrol script'ine gerek kalmaz.

---

## Yöntem 3 — Sunucu saatine göre manuel hesap

Sunucu saat dilimini biliyorsanız İstanbul 00:00'ın karşılığını hesaplayın:

| Sunucu TZ | İstanbul 00:00 karşılığı (sunucu saati) |
|---|---|
| UTC (GMT+0) | **21:00** (önceki gün) |
| GMT+1 | **22:00** (önceki gün) |
| GMT+2 | **23:00** (önceki gün) |
| GMT+3 (İstanbul) | **00:00** |
| GMT+4 | **01:00** |

**Windows Görev Zamanlayıcı** → Tetikleyici → Günlük → Başlangıç saati: yukarıdaki karşılık.

> Türkiye yaz/kış saati uygulamaz (sabit GMT+3). Hesap yıl boyunca değişmez.

---

## Hangi dosyayı ne zaman kullanmalı?

| Dosya | Ne zaman |
|---|---|
| `cron/arama_kayitlari.php` | Her X dakikada veri çek + Telegram raporu (saatlik rapor) |
| `cron/istanbul_gece_yarisi.php` | Yalnızca İstanbul gece 00:00'da tam senkron |

---

## Sunucu saatini kontrol

```bat
c:\xampp\php\php.exe -r "echo date_default_timezone_get();"
c:\xampp\php\php.exe -r "echo (new DateTime('now', new DateTimeZone('Europe/Istanbul')))->format('Y-m-d H:i:s T');"
```

İlk satır sunucu/PHP TZ, ikinci satır İstanbul saati.

---

## Test (gece yarısını beklemeden)

Kontrol script'ini doğrudan çalıştırırsanız İstanbul saati 00:00–00:04 değilse atlar:

```bat
c:\xampp\php\php.exe c:\xampp\htdocs\cron\istanbul_gece_yarisi.php
```

Gece yarısı mantığını atlayıp ana cron'u test etmek için:

```bat
c:\xampp\php\php.exe c:\xampp\htdocs\cron\arama_kayitlari.php
```

---

## Telegram /info komutu (manuel rapor)

Grupta `/info` yazıldığında bot, **bugün 00:00 — komut saati** arası rapor gönderir.

### Kurulum (sunucu — webhook, önerilen)

1. BotFather → `/setprivacy` → **Disable** (grupta komutları görebilmesi için)
2. Webhook kaydet (HTTPS zorunlu):
   ```
   https://api.telegram.org/bot{BOT_TOKEN}/setWebhook?url=https://alanadiniz.com/api/telegram_webhook.php
   ```
3. `telegram_ayar` tablosundaki `chat_id` grubun ID'si olmalı

### Kurulum (webhook yok — polling)

Her 1 dakikada bir:

```bat
c:\xampp\php\php.exe c:\xampp\htdocs\cron\telegram_poll.php
```

> Webhook ve polling aynı anda kullanılmamalı. Webhook aktifken polling çalıştırmayın.
