Vai al contenuto
TubePress — gratuito, self-hosted & attivamente mantenuto
Riferimento per sviluppatori

Script Cron e CLI

Lo scheduler pseudo-cron e gli script a riga di comando opzionali per host avanzati.

TubePress esegue i propri compiti ricorrenti — ricalcolo delle classifiche, verifica dei job di transcodifica, importazione di feed, aggiornamento delle sitemap e altro ancora — senza richiedere la configurazione di un crontab di sistema. Questa pagina illustra lo pseudo-cron, il heartbeat che lo mantiene attivo e gli script da riga di comando opzionali per host avanzati.

Lo pseudo-cron

Il CronManager è uno scheduler in stile WordPress. I task vengono registrati con un nome e un intervallo; CronManager::run() viene chiamato una volta al termine di ogni rendering di pagina. Ogni task viene eseguito solo se è trascorso abbastanza tempo dall'ultima esecuzione.

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

È progettato per essere sicuro su qualsiasi host:

  • Blocco atomico. Un UPDATE condizionale sulla tabella settings acquisisce ogni esecuzione, quindi due richieste simultanee non possono mai eseguire lo stesso task due volte.
  • Timestamp persistenti. I tempi dell'ultima esecuzione sono memorizzati in settings (con autoload = 0), quindi la pianificazione sopravvive a riavvii e crash — il successivo caricamento di pagina riprende semplicemente da dove era rimasto.
  • Backoff automatico. Un task che continua a generare errori viene ritentato con un intervallo in crescita esponenziale (con un massimo di un'ora) fino al ripristino; il contatore di errori si azzera in caso di successo.

Il heartbeat — nessun crontab richiesto

Uno pseudo-cron si attiva solo quando le pagine vengono renderizzate, il che rappresenta un problema per un sito nuovo o a basso traffico. TubePress risolve questo con un heartbeat autogestito: un processo CLI leggero (bin/heartbeat.php) che fa il ping alla home page circa ogni 50 secondi, mantenendo lo scheduler attivo anche con zero visitatori.

  • È protetto dal PID e riavviato automaticamente da qualsiasi richiesta web in caso di interruzione — non è necessario avviarlo o supervisionarlo.
  • Disattivalo in fase di esecuzione impostando heartbeat_enabled su 0.
Ecco perché TubePress funziona anche su hosting condiviso. Tra lo pseudo-cron e il heartbeat, i lavori pianificati avvengono automaticamente — nessun crontab -e, nessun supervisore, nessun servizio aggiuntivo da gestire.

Cosa viene eseguito dallo scheduler

Il core e i plugin inclusi registrano i propri task — ad esempio il ricalcolo del punteggio CTR, l'invio e il ritentativo dei job di transcodifica, le importazioni di feed, l'elaborazione del catalogo, i job di traduzione AI e gli aggiornamenti della sitemap. Man mano che si abilitano i sottosistemi, aggiungono i propri task automaticamente; non è necessaria alcuna configurazione aggiuntiva.

Script CLI opzionali

Per operazioni intensive o una tantum, alcuni script da riga di comando sono inclusi in bin/ e possono essere eseguiti manualmente o da un vero crontab su host idonei. Includono worker a lunga esecuzione (per download del catalogo ed eliminazioni in blocco) e strumenti di manutenzione. Eseguili con il PHP CLI di sistema dalla radice del progetto:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
Abbina il PHP CLI al PHP web. Esegui gli script CLI con la stessa versione PHP utilizzata dal sito (8.2 o successiva). Il controllo della versione rifiuterà di avviarsi su versioni precedenti.

Utilizzo di un vero crontab (avanzato)

Se preferisci gestire lo scheduler dal sistema operativo — ad esempio su un sito ad alto traffico dove si desidera una temporizzazione precisa e prevedibile — puoi disabilitare il heartbeat e aggiungere un'unica voce di cron di sistema che richiede la home page (o esegue il heartbeat una volta) a intervalli brevi. La maggior parte degli operatori non ne ha mai bisogno; il heartbeat integrato è sufficiente.

Passaggi successivi

Ancora bloccato?

Apri un ticket dalla tua dashboard e il nostro team ti aiuterà.

Prova la demo live → Scarica TubePress →