Przejdź do treści
TubePress — bezpłatny, samodzielnie hostowany & aktywnie utrzymywany
Dokumentacja dla deweloperów

Skrypty Cron i CLI

Harmonogram pseudo-cron oraz opcjonalne skrypty wiersza poleceń dla zaawansowanych hostów.

TubePress wykonuje cykliczne zadania — przeliczanie rankingów, sprawdzanie zadań transkodowania, importowanie kanałów, odświeżanie map witryn i inne — bez konieczności konfigurowania systemowego crontab. Ta strona opisuje pseudo-cron, sygnał heartbeat podtrzymujący jego działanie oraz opcjonalne skrypty wiersza poleceń dla zaawansowanych hostów.

Pseudo-cron

CronManager to harmonogram wzorowany na WordPress. Zadania są rejestrowane z nazwą i interwałem, a CronManager::run() jest wywoływane raz na końcu każdego renderowania strony. Każde zadanie uruchamia się tylko wtedy, gdy od ostatniego uruchomienia minęło wystarczająco dużo czasu.

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

Zaprojektowano go tak, aby był bezpieczny na każdym hostingu:

  • Atomowe blokowanie. Warunkowe UPDATE na tabeli settings przypisuje każde uruchomienie, dzięki czemu dwa równoczesne żądania nigdy nie uruchomią tego samego zadania dwukrotnie.
  • Trwałe znaczniki czasu. Czasy ostatniego uruchomienia są przechowywane w settings (z autoload = 0), więc harmonogram przeżywa restarty i awarie — następne załadowanie strony po prostu wznawia pracę od miejsca, w którym ją przerwano.
  • Automatyczne wydłużanie przerw. Zadanie, które stale zgłasza błędy, jest ponawiane z wykładniczo rosnącym interwałem (ograniczonym do jednej godziny), aż do odzyskania sprawności, a licznik błędów resetuje się po sukcesie.

Heartbeat — bez crontab

Pseudo-cron uruchamia się tylko podczas renderowania stron, co stanowi problem dla nowej lub niskoruchu witryny. TubePress rozwiązuje to za pomocą samodzielnie zarządzanego heartbeat: lekkiego procesu CLI (bin/heartbeat.php), który pinguje stronę główną mniej więcej co 50 sekund, dzięki czemu harmonogram działa nawet przy zerowej liczbie odwiedzających.

  • Jest chroniony przez PID i automatycznie restartowany przez każde żądanie HTTP, jeśli kiedykolwiek zakończy działanie — nie musisz go uruchamiać ani nadzorować.
  • Wyłącz go w czasie działania, ustawiając heartbeat_enabled na 0.
Dlatego TubePress działa na hostingu współdzielonym. Dzięki pseudo-cron i heartbeat zaplanowane zadania po prostu działają — bez crontab -e, bez supervisora, bez żadnych dodatkowych usług do utrzymania.

Co działa na harmonogramie

Rdzeń i dołączone wtyczki rejestrują własne zadania — na przykład przeliczanie wyników CTR, wysyłanie i ponawianie zadań transkodowania, importy kanałów, przetwarzanie katalogu, zadania tłumaczenia AI i odświeżanie map witryn. W miarę włączania podsystemów dodają one swoje zadania automatycznie — nie ma nic do konfigurowania.

Opcjonalne skrypty CLI

Do ciężkich lub jednorazowych operacji kilka skryptów wiersza poleceń jest dostarczanych w bin/ i można je uruchamiać ręcznie lub z prawdziwego crontab na odpowiednich hostach. Obejmują one długo działające procesy robocze (do pobierania katalogu i masowego usuwania) oraz narzędzia do konserwacji. Uruchom je za pomocą systemowego CLI PHP z katalogu głównego projektu:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
Dopasuj CLI PHP do webowego PHP. Uruchamiaj skrypty CLI z tą samą wersją PHP, której używa Twoja witryna (8.2 lub nowsza). Strażnik wersji odmówi uruchomienia na czymkolwiek starszym.

Korzystanie z prawdziwego crontab (zaawansowane)

Jeśli wolisz sterować harmonogramem z systemu operacyjnego — na przykład w witrynie o dużym ruchu, gdzie chcesz ścisłego i przewidywalnego harmonogramu — możesz wyłączyć heartbeat i dodać pojedynczy wpis cron systemu, który żąda strony głównej (lub uruchamia heartbeat raz) w krótkim interwale. Większość operatorów nigdy tego nie potrzebuje; wbudowany heartbeat jest wystarczający.

Następne kroki

Nadal masz problem?

Otwórz zgłoszenie z poziomu panelu, a nasz zespół Ci pomoże.

Wypróbuj demo na żywo → Pobierz TubePress →