ANIME TRACKER

ANİME TRACKER => Duyurular ve Sürümler => Topic started by: hitsumo on Sep 15, 2026, 03:54 PM

Title: 1.1.32
Post by: hitsumo on Sep 15, 2026, 03:54 PM
# Anime Tracker 1.1.32

**Yayın tarihi:** 2026-08-24

Bu sürüm tek bir soruyu çözer: **bir sayfa değiştiğinde arama motoru bunu ne
zaman öğrenir?**

1.1.30 siteye bir sitemap verdi. Sitemap "burada neler var" sorusunu
cevaplar ve tarayıcı onu kendi takvimiyle okur — günler, bazen haftalar.
Yeni eklenen bir animenin adresi o okumaya kadar bilinmez; silinen bir adres
de tarayıcı tekrar uğrayana kadar arama sonuçlarında durur.

**IndexNow** öteki soruyu cevaplar: *şimdi ne değişti?* Bing ile Yandex'in
ortak kullandığı bir bildirim protokolü; tek bir uca haber verirsin, katılan
motorlar paylaşır. Google katılmaz — bu yüzden IndexNow sitemap'in yerine
geçmez, yanına eklenir.

## Ekranda hiçbir şey değişmedi

Bu sürüm site yöneticisini ilgilendirir, listesini tutan kullanıcıyı değil.
Yeni bir düğme, yeni bir alan, değişen bir sayfa yok. Kendi bilgisayarında
tek kullanıcı olarak çalıştıranlar için ise hiç devreye girmez: giriş
istemeyen bir kurulum zaten "beni dizine ekleme" diyor, adres duyurması
kendisiyle çelişirdi.

## Ne zaman haber verilir

| Yaptığın iş | Duyurulan |
| --- | --- |
| Yeni anime eklemek | Yeni animenin adresleri |
| Var olan animeyi düzenlemek | O animenin adresleri |
| Anime silmek | Silinen adresler (motor uğrar, 404 görür, dizinden düşürür) |
| Kronoloji notu eklemek/değiştirmek/silmek | Etkilenen kronoloji sayfası |
| Üye önerisini onaylamak | Onaylanan animenin adresleri |
| Katalogdan içeri aktarmak | Yalnızca **gerçekten değişen** kayıtlar |

Hangi adreslerin duyurulduğu sitemap'in kuralına bağlıdır — sitemap ne
listeliyorsa o: yetişkin işaretli kayıtlar dışarıda, kronoloji sayfası
yalnız notu olan animede, seri zaman çizelgesi yalnız seriyi temsil eden
kayıtta.

Ana sayfa bilerek dışarıda. Neredeyse her yazmada değişiyor, tarayıcılar
zaten sık uğruyor ve yeni anime kendi detay adresinden keşfediliyor; her
seferinde duyurmak, en az ihtiyacı olan sayfaya bütçe harcamak olurdu.

## Kaydettiğinde bir şey beklemezsin

Akla ilk gelen çözüm — kaydet düğmesine basınca arama motoruna istek atmak —
üç ayrı yerden yanlıştı:

- Kaydetme işlemine üçüncü taraf bir ağ isteği girerdi; uç yavaşlarsa form
  yavaşlamış gibi hissedilirdi.
- Başarısız istek kaybolurdu. Tekrar denemesi yok, adres hiç duyurulmamış
  olurdu.
- 500 satırlık bir içeri aktarma 500 istek atardı; aynı animeyi bir dakikada
  beş kez düzenlemek beş istek atardı — protokolün gönderenlerden
  *yapmamasını* istediği şey tam olarak bu.

Bu yüzden kaydetme sırasında yapılan tek şey küçük bir kayıt: "şu adres
değişti". Gönderimi, saatte bir çalışan ayrı bir görev toplu hâlde yapıyor —
bölüm senkronunda 1.0.19'dan beri kullanılan düzenin aynısı. Aynı sayfa gün
içinde on kez değişse tek satır kalır, tek duyuru gider.

Bunun pratik anlamı: **"şimdi ping atmalı mıyım?" diye düşünmen gereken bir
an yok.** Sen her zamanki gibi kaydediyorsun, gerisi kendiliğinden oluyor.

## Kurulum (bir kez)

Özellik varsayılan olarak **kapalıdır** ve iki satır yapılandırma ister:

1. Anahtarı üret:
 
  ```
  php indexnow_ping.php --genkey
  ```
 
2. Yazdırdığı satırları `config.php`'ye ekle:
 
  ```php
  define('INDEXNOW_KEY', '...');
  define('SITE_URL', 'https://siteadresin');
  ```
 
  `SITE_URL` burada **zorunlu**. Web isteğinde sitenin adresi isteğin
  kendisinden çıkarılabiliyor, ama komut satırında böyle bir bilgi yok;
  olmadan her adres `http://localhost/...` diye üretilir ve reddedilir.
  Betik onsuz çalışmayı reddeder, yanlış adres göndermez.
 
3. `https://siteadresin/<anahtar>.txt` adresinin anahtarı düz metin olarak
  döndürdüğünü kontrol et. (Bu dosya `robots.txt` gibi üretiliyor; diske
  elle bir `.txt` koymana gerek yok.)
 
4. Görevi zamanla — saatte bir yeterli:
 
  ```
  0 * * * * php /yol/indexnow_ping.php >> /var/log/anime_indexnow.log 2>&1
  ```
 

Anahtar tanımlı değilse hiçbir şey kuyruğa yazılmaz, hiçbir istek gitmez ve
uygulamanın geri kalanı etkilenmez.

## Yönetici için dört komut

```
php indexnow_ping.php             bekleyenleri gönder
php indexnow_ping.php --status    yapılandırma + kuyruk raporu, gönderim yok
php indexnow_ping.php --dry-run   sıradaki partinin adreslerini yazdır, gönderim yok
php indexnow_ping.php --retry     takılan satırların sayacını sıfırla, sonra gönder
```

`--status` çıktısı şuna benzer:

```
indexnow status
  mode:          online (indexable)
  key:           a1b2... (32 chars)
  site url:      https://siteadresin
  key file:      https://siteadresin/a1b2....txt
  curl:          yes
  queued:        14
  stuck:         0 (attempts >= 5; use --retry)
  last ping:     2026-08-24 09:00:00 UTC
  last count:    31
```

## Bir şey ters giderse

Gönderim başarısız olursa kuyruk **silinmez**. Geçici bir arıza (aşırı
istek, sunucu hatası, bağlantı kopması) bir sonraki koşuda kendiliğinden
telafi edilir. Kalıcı bir sorun — yanlış anahtar, tutmayan adres — beş
denemeden sonra o satırları beklemeye alır ki arkalarındaki yeni adresleri
tıkamasınlar; satırlar silinmez, `--status` bunları `stuck` diye sayar ve
sebep düzeltilince `--retry` hepsini geri alır.

Her başarısızlığın ayrıntısı sunucu hata günlüğüne yazılır.

## Değişen dosyalar

**Yeni:**

```
files/functions/indexnow_helpers.php    (kuyruk + gönderim mantığı)
files/indexnow_ping.php                 (cron/komut satırı görevi)
files/indexnow_key.php                  (anahtar dosyasını üreten sayfa)
files/migration/1.1.32/upgrade.sql
```

**Değişen:**

```
files/functions.php                     (yeni yardımcı dosyanın yüklenmesi)
files/functions/seo_helpers.php         (tek anime için adres kuralı)
files/add_anime.php                     (ekleme sonrası kuyruğa yazar)
files/edit_anime.php                    (düzenleme sonrası kuyruğa yazar)
files/index.php                         (silmeden ÖNCE kuyruğa yazar)
files/catalog_import.php                (yalnız gerçekten değişenleri yazar)
files/admin/admin_catalog_requests.php  (öneri onayı kuyruğa yazar)
files/add_chronology_marker.php         (kronoloji sayfası kazanılabilir)
files/update_chronology_marker.php      (kronoloji içeriği değişti)
files/delete_chronology_marker.php      (son not silinmiş olabilir)
files/.htaccess                         (anahtar dosyası yönlendirmesi)
files/config_example.php                (INDEXNOW_KEY açıklaması)
files/schema.sql
files/version.txt
```

## Dağıtım notu

- `files/functions.php` ile `files/functions/indexnow_helpers.php`
  **birlikte** yüklenmelidir. Yükleyici satırı olmadan dosya hiç okunmaz ve
  kuyruğa yazan her sayfa açılmaz.
- `files/functions/seo_helpers.php` de aynı pakette gitmelidir: adres kuralı
  orada duruyor, eski dosyada o fonksiyon yok.
- `files/.htaccess` yenilenmezse anahtar dosyası adresi 403 döner ve
  gönderimler sessizce reddedilir. Site çalışmaya devam eder; yalnızca
  IndexNow işe yaramaz.
- **Merkez katalog sunucusunda yapılacak bir şey yok.** 1.1.31'in aksine
  katalog telinde yeni alan yok, elle `ALTER` gerekmiyor.
- Migration otomatik koşar ve tek bir tablo oluşturur.
- **Dağıtım sunucusunda** iki işlevsel adım her zamanki gibi: yayımlanan
  `version.txt` 1.1.32'ye çekilmeli — yoksa "Güncelleme Denetle" hâlâ
  1.1.31'i son sürüm sanar — ve `updates/1.1.32/anime-tracker-1.1.32.zip`
  paketi yayımlanmalı, yoksa "Güncelle" düğmesi indirme adresinde 404 alır.
  Paketin üç yeni dosyayı taşıdığı açılıp denetlenmelidir.