Zum Inhalt springen
TubePress — kostenlos, selbst gehostet & aktiv gepflegt
Entwicklerreferenz

Cron- & CLI-Skripte

Der Pseudo-Cron-Scheduler und die optionalen Kommandozeilen-Skripte für fortgeschrittene Hosts.

TubePress führt seine wiederkehrenden Aufgaben – Neuberechnung von Rankings, Abfragen von Transkodierungsaufträgen, Importieren von Feeds, Aktualisieren von Sitemaps und mehr – durch, ohne dass Sie einen System-Crontab konfigurieren müssen. Diese Seite erklärt den Pseudo-Cron, den Heartbeat, der ihn am Leben erhält, und die optionalen Befehlszeilenskripte für fortgeschrittene Hosts.

Der Pseudo-Cron

Der CronManager ist ein Scheduler im WordPress-Stil. Aufgaben werden mit einem Namen und einem Intervall registriert, und CronManager::run() wird am Ende jedes Seitenrenderings einmal aufgerufen. Jede Aufgabe wird nur ausgeführt, wenn seit der letzten Ausführung genug Zeit vergangen ist.

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

Er ist darauf ausgelegt, auf jedem Host sicher zu sein:

  • Atomares Sperren. Ein bedingtes UPDATE auf der settings-Tabelle beansprucht jeden Lauf, sodass zwei gleichzeitige Anfragen dieselbe Aufgabe nie zweimal ausführen können.
  • Persistente Zeitstempel. Letzte-Ausführungs-Zeiten werden in settings (mit autoload = 0) gespeichert, sodass der Zeitplan Neustarts und Abstürze überlebt – der nächste Seitenaufruf macht einfach dort weiter, wo er aufgehört hat.
  • Automatisches Backoff. Eine Aufgabe, die wiederholt fehlschlägt, wird mit einem exponentiell wachsenden Intervall (maximal eine Stunde) wiederholt, bis sie sich erholt, und der Fehlerzähler wird bei Erfolg zurückgesetzt.

Der Heartbeat – kein Crontab erforderlich

Ein Pseudo-Cron wird nur ausgelöst, wenn Seiten gerendert werden, was bei einer brandneuen oder wenig besuchten Website ein Problem darstellt. TubePress löst dies mit einem selbstverwalteten Heartbeat: einem leichtgewichtigen CLI-Prozess (bin/heartbeat.php), der Ihre Startseite ungefähr alle 50 Sekunden anpingt, damit der Scheduler auch bei null Besuchern weiterläuft.

  • Er ist PID-geschützt und wird durch jede Web-Anfrage automatisch neu gestartet, wenn er jemals abstirbt – Sie starten oder überwachen ihn nicht.
  • Deaktivieren Sie ihn zur Laufzeit, indem Sie heartbeat_enabled auf 0 setzen.
Deshalb läuft TubePress auf Shared Hosting. Zwischen dem Pseudo-Cron und dem Heartbeat erledigt sich die geplante Arbeit von selbst – kein crontab -e, kein Supervisor, keine zusätzlichen Dienste zu verwalten.

Was auf dem Scheduler läuft

Der Kern und die mitgelieferten Plugins registrieren ihre eigenen Aufgaben – zum Beispiel CTR-Score-Neuberechnung, Versand und Wiederholung von Transkodierungsaufträgen, Feed-Importe, Katalogverarbeitung, KI-Übersetzungsaufträge und Sitemap-Aktualisierungen. Wenn Sie Subsysteme aktivieren, fügen sie ihre Aufgaben automatisch hinzu; es ist nichts zu konfigurieren.

Optionale CLI-Skripte

Für aufwendige oder einmalige Operationen werden einige Befehlszeilenskripte in bin/ mitgeliefert und können manuell oder aus einem echten Crontab auf geeigneten Hosts ausgeführt werden. Sie umfassen langlebige Worker (für Katalog-Downloads und Massenlöschungen) und Wartungshelfer. Führen Sie sie mit dem System-PHP-CLI aus dem Projektstamm aus:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
PHP-CLI an Web-PHP anpassen. Führen Sie CLI-Skripte mit derselben PHP-Version aus, die Ihre Website verwendet (8.2 oder neuer). Die Versionsprüfung verweigert den Start auf älteren Versionen.

Einen echten Crontab verwenden (für Fortgeschrittene)

Wenn Sie den Scheduler lieber vom Betriebssystem aus steuern möchten – zum Beispiel auf einer stark besuchten Website, auf der Sie präzises, vorhersehbares Timing wünschen – können Sie den Heartbeat deaktivieren und einen einzelnen System-Cron-Eintrag hinzufügen, der Ihre Startseite in einem kurzen Intervall aufruft (oder den Heartbeat einmal ausführt). Die meisten Betreiber benötigen dies nie; der integrierte Heartbeat ist ausreichend.

Nächste Schritte

Noch Hilfe benötigt?

Erstellen Sie ein Ticket in Ihrem Dashboard und unser Team hilft Ihnen gerne weiter.

Live-Demo ausprobieren → TubePress herunterladen →