Ir para o conteúdo
TubePress — gratuito, auto-hospedado & ativamente mantido
Referência para desenvolvedores

Scripts de cron e CLI

O agendador pseudo-cron e os scripts opcionais de linha de comando para hospedagens avançadas.

O TubePress executa seus trabalhos recorrentes — recalcular classificações, verificar jobs de transcodificação, importar feeds, atualizar sitemaps e muito mais — sem exigir que você configure um crontab do sistema. Esta página explica o pseudo-cron, o heartbeat que o mantém ativo e os scripts de linha de comando opcionais para hosts avançados.

O pseudo-cron

O CronManager é um agendador no estilo WordPress. As tarefas são registradas com um nome e um intervalo, e CronManager::run() é chamado uma vez ao final de cada renderização de página. Cada tarefa só é executada se tempo suficiente tiver passado desde a última execução.

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

Foi projetado para ser seguro em qualquer host:

  • Bloqueio atômico. Um UPDATE condicional na tabela settings reivindica cada execução, de modo que duas requisições simultâneas jamais podem executar a mesma tarefa duas vezes.
  • Timestamps persistentes. Os horários da última execução são armazenados em settings (com autoload = 0), portanto o agendamento sobrevive a reinicializações e falhas — o próximo carregamento de página simplesmente retoma de onde parou.
  • Backoff automático. Uma tarefa que continua falhando é retentada com um intervalo crescente exponencialmente (limitado a uma hora) até se recuperar, e o contador de falhas é redefinido no sucesso.

O heartbeat — sem crontab necessário

Um pseudo-cron só dispara quando páginas estão sendo renderizadas, o que é um problema para um site novo ou de baixo tráfego. O TubePress resolve isso com um heartbeat autogerenciado: um processo CLI leve (bin/heartbeat.php) que faz ping na sua página inicial aproximadamente a cada 50 segundos, para que o agendador continue funcionando mesmo com zero visitantes.

  • Ele é protegido por PID e reiniciado automaticamente por qualquer requisição web caso venha a morrer — você não precisa iniciá-lo ou supervisioná-lo.
  • Desative-o em tempo de execução definindo heartbeat_enabled como 0.
É por isso que o TubePress funciona em hospedagem compartilhada. Entre o pseudo-cron e o heartbeat, o trabalho agendado simplesmente acontece — sem crontab -e, sem supervisor, sem serviços extras para manter.

O que é executado no agendador

O núcleo e os plugins incluídos registram suas próprias tarefas — por exemplo, recálculo de pontuação CTR, despacho e nova tentativa de jobs de transcodificação, importações de feed, processamento de catálogo, trabalhos de tradução por IA e atualizações de sitemap. À medida que você ativa os subsistemas, eles adicionam suas tarefas automaticamente; não há nada para configurar.

Scripts CLI opcionais

Para operações pesadas ou únicas, alguns scripts de linha de comando são fornecidos em bin/ e podem ser executados manualmente ou a partir de um crontab real em hosts compatíveis. Eles incluem workers de longa duração (para downloads de catálogo e exclusões em massa) e auxiliares de manutenção. Execute-os com o PHP CLI do sistema a partir da raiz do projeto:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
Use o mesmo PHP CLI e PHP web. Execute scripts CLI com a mesma versão do PHP que seu site usa (8.2 ou mais recente). O guard de versão recusará iniciar em qualquer versão mais antiga.

Usando um crontab real (avançado)

Se você preferir controlar o agendador pelo sistema operacional — por exemplo, em um site de alto tráfego onde deseja uma temporização precisa e previsível — você pode desativar o heartbeat e adicionar uma única entrada de cron do sistema que requisita sua página inicial (ou executa o heartbeat uma vez) em um intervalo curto. A maioria dos operadores nunca precisa disso; o heartbeat integrado é suficiente.

Próximos passos

Ainda com dúvidas?

Abra um ticket pelo painel e nossa equipe vai ajudá-lo.

Experimente o demo ao vivo → Baixar TubePress →