İçeriğe atla
TubePress — ücretsiz, kendi sunucunda & aktif olarak geliştirilen
Geliştirici referansı

Cron ve CLI betikleri

Sözde-cron (pseudo-cron) zamanlayıcısı ve gelişmiş sunucular için isteğe bağlı komut satırı betikleri.

TubePress, bir sistem crontab'ı yapılandırmanızı gerektirmeden sıralamaları yeniden hesaplama, dönüştürme işlerini sorgulama, beslemeleri içe aktarma, site haritalarını yenileme ve daha fazlası gibi tekrarlayan görevlerini çalıştırır. Bu sayfa, sahte cron'u, onu ayakta tutan kalp atışını ve gelişmiş sunucular için isteğe bağlı komut satırı betiklerini açıklamaktadır.

Sahte cron

CronManager, WordPress tarzı bir zamanlayıcıdır. Görevler bir ad ve aralıkla kaydedilir; CronManager::run() ise her sayfa oluşturmanın sonunda bir kez çağrılır. Her görev yalnızca son çalışmasından bu yana yeterli zaman geçmişse çalışır.

// Register a task (typically from a plugin's boot() method)
CronManager::register('promo_refresh', 600, function () {
    Promo::rebuildCache();   // runs at most every 10 minutes
});

Herhangi bir sunucuda güvenli olacak şekilde tasarlanmıştır:

  • Atomik kilitleme. settings tablosunda koşullu bir UPDATE her çalışmayı talep eder; böylece iki eş zamanlı istek aynı görevi asla iki kez çalıştıramaz.
  • Kalıcı zaman damgaları. Son çalışma zamanları settings tablosunda (autoload = 0 ile) depolanır; bu nedenle zamanlama yeniden başlatmalar ve çökmelerden sonra da geçerliliğini korur — bir sonraki sayfa yüklemesi kaldığı yerden devam eder.
  • Otomatik geri çekilme. Hata vermeye devam eden bir görev, düzelene kadar üstel olarak artan aralıklarla (en fazla bir saat) yeniden denenir ve başarı durumunda hata sayacı sıfırlanır.

Kalp atışı — crontab gerekmez

Sahte cron yalnızca sayfalar oluşturulurken tetiklenir; bu durum, yeni veya düşük trafikli bir site için sorun oluşturabilir. TubePress bunu kendi kendini yöneten bir kalp atışıyla çözer: zamanlayıcının sıfır ziyaretçiyle bile çalışmaya devam etmesi için ana sayfanızı yaklaşık her 50 saniyede bir yoklayan hafif bir CLI işlemi (bin/heartbeat.php).

  • Durması halinde herhangi bir web isteği tarafından PID korumalı ve otomatik olarak yeniden başlatılır — onu başlatmak veya denetlemek zorunda değilsiniz.
  • heartbeat_enabled0 olarak ayarlayarak çalışma zamanında kapatabilirsiniz.
TubePress'in paylaşımlı barındırmada çalışmasının nedeni budur. Sahte cron ve kalp atışı sayesinde zamanlanmış işler kendiliğinden gerçekleşir — crontab -e yok, denetleyici yok, bakım gerektiren ekstra hizmet yok.

Zamanlayıcıda ne çalışır

Çekirdek ve paketlenmiş eklentiler kendi görevlerini kaydeder — örneğin CTR skoru yeniden hesaplama, dönüştürme işi gönderimi ve yeniden deneme, besleme içe aktarmaları, katalog işleme, AI çeviri işleri ve site haritası yenilemeleri. Alt sistemleri etkinleştirdikçe görevlerini otomatik olarak eklerler; yapılandırılacak ek bir şey yoktur.

İsteğe bağlı CLI betikleri

Ağır veya tek seferlik işlemler için bin/ dizininde birkaç komut satırı betiği bulunur; bunlar yetenekli sunucularda manuel olarak veya gerçek bir crontab'dan çalıştırılabilir. Uzun süreli çalışanları (katalog indirmeleri ve toplu silmeler için) ve bakım yardımcılarını içerirler. Proje kök dizininden sistem PHP CLI'si ile çalıştırın:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
CLI PHP'yi web PHP'siyle eşleştirin. CLI betiklerini sitenizin kullandığı aynı PHP sürümüyle (8.2 veya daha yeni) çalıştırın. Sürüm koruması daha eski bir sürümde başlamayı reddedecektir.

Gerçek bir crontab kullanma (gelişmiş)

Zamanlayıcıyı işletim sisteminden yönetmeyi tercih ediyorsanız — örneğin sıkı ve öngörülebilir zamanlama istediğiniz yüksek trafikli bir sitede — kalp atışını devre dışı bırakabilir ve ana sayfanızı kısa aralıklarla isteyen (ya da kalp atışını bir kez çalıştıran) tek bir sistem cron girişi ekleyebilirsiniz. Çoğu operatörün buna ihtiyacı yoktur; yerleşik kalp atışı yeterlidir.

Sonraki adımlar

Hâlâ takıldınız mı?

Kontrol panelinizden bir destek talebi açın, ekibimiz size yardımcı olacaktır.

Canlı demoyu deneyin → TubePress'i indirin →