Saltar al contenido
TubePress — gratuito, autoalojado & con mantenimiento activo
Referencia para desarrolladores

Cron y scripts de CLI

El programador pseudo-cron y los scripts opcionales de línea de comandos para hosts avanzados.

TubePress ejecuta sus tareas recurrentes — recálculo de clasificaciones, supervisión de trabajos de transcodificación, importación de feeds, actualización de sitemaps y más — sin necesidad de configurar un crontab del sistema. Esta página explica el pseudo-cron, el latido que lo mantiene activo y los scripts de línea de comandos opcionales para hosts avanzados.

El pseudo-cron

El CronManager es un planificador al estilo de WordPress. Las tareas se registran con un nombre y un intervalo, y CronManager::run() se llama una vez al final de cada renderizado de página. Cada tarea solo se ejecuta si ha pasado suficiente tiempo desde la última vez que se ejecutó.

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

Está diseñado para funcionar de forma segura en cualquier host:

  • Bloqueo atómico. Un UPDATE condicional sobre la tabla settings reclama cada ejecución, por lo que dos solicitudes simultáneas nunca pueden ejecutar la misma tarea dos veces.
  • Marcas de tiempo persistentes. Los tiempos de última ejecución se almacenan en settings (con autoload = 0), de modo que el calendario sobrevive a reinicios y fallos — la siguiente carga de página simplemente retoma donde se dejó.
  • Retroceso automático. Una tarea que sigue fallando se reintenta con un intervalo que crece exponencialmente (con un máximo de una hora) hasta que se recupera, y el contador de fallos se reinicia al tener éxito.

El latido — no se necesita crontab

Un pseudo-cron solo se activa cuando se están renderizando páginas, lo que es un problema para un sitio recién creado o de poco tráfico. TubePress resuelve esto con un latido autogestionado: un proceso CLI ligero (bin/heartbeat.php) que hace ping a tu página de inicio aproximadamente cada 50 segundos para que el planificador siga funcionando incluso con cero visitantes.

  • Está protegido por PID y es relanzado automáticamente por cualquier solicitud web si alguna vez muere — no es necesario iniciarlo ni supervisarlo.
  • Desactívalo en tiempo de ejecución estableciendo heartbeat_enabled en 0.
Por eso TubePress funciona en hosting compartido. Entre el pseudo-cron y el latido, el trabajo programado simplemente ocurre — sin crontab -e, sin supervisor, sin servicios adicionales que mantener.

Qué se ejecuta en el planificador

El núcleo y los plugins incluidos registran sus propias tareas — por ejemplo, el recálculo de puntuaciones CTR, el despacho y reintento de trabajos de transcodificación, importaciones de feeds, procesamiento de catálogos, trabajos de traducción con IA y actualización de sitemaps. A medida que activas subsistemas, estos añaden sus tareas automáticamente; no hay nada que configurar.

Scripts CLI opcionales

Para operaciones intensivas o puntuales, algunos scripts de línea de comandos se incluyen en bin/ y pueden ejecutarse manualmente o desde un crontab real en hosts compatibles. Incluyen trabajadores de larga duración (para descargas de catálogos y eliminaciones masivas) y herramientas de mantenimiento. Ejecútalos con el PHP CLI del sistema desde la raíz del proyecto:

php bin/heartbeat.php        # run the heartbeat in the foreground
php bin/catalogue-worker.php # process catalogue download jobs
Usa la misma versión de PHP CLI que la del servidor web. Ejecuta los scripts CLI con la misma versión de PHP que usa tu sitio (8.2 o posterior). El guardián de versión se negará a iniciar con versiones anteriores.

Usar un crontab real (avanzado)

Si prefieres controlar el planificador desde el sistema operativo — por ejemplo, en un sitio de alto tráfico donde deseas una temporización ajustada y predecible — puedes desactivar el latido y añadir una única entrada de cron del sistema que solicite tu página de inicio (o ejecute el latido una vez) en un intervalo corto. La mayoría de los operadores nunca necesitan esto; el latido integrado es suficiente.

Próximos pasos

¿Todavía con dudas?

Abre un ticket desde tu panel y nuestro equipo te ayudará.

Prueba la demo en vivo → Descargar TubePress →