Skip to content

Technical Background Jobs

Daniel Neto edited this page Oct 29, 2026 · 1 revision

Technical background jobs and scheduling

Audience: developers and advanced administrators. Baseline reviewed: 2026-10-29.

Scheduling boundaries

Work Owner and entry point
Periodic Streamer plugin hooks Scheduler plugin; plugin/Scheduler/run.php
Scheduled commands/releases/messages Scheduler data classes and configured plugin jobs
Encoder monitoring/queue recovery Encoder installation; its install/cron.php and monitor classes
Live automatic restream startup plugin/Live/restreamInBackground.php
Seek sprite generation VideoThumbnails createSprite.php worker
Social upload work SocialMediaPublisher publisher worker/queue
WebRTC service watchdog WebRTC periodic hook and separate service process

An external cron/timer invoking an entry point is different from the plugin being enabled. Docker deployment samples include a Streamer Scheduler cron, but an existing host can use a different scheduler/user/path. Discover it rather than copying another installation's command.

Streamer Scheduler

Scheduler dispatches periodic plugin hooks and configured jobs. Its settings include watchdog and retention/cleanup behavior. Manually running the Scheduler can therefore do more than produce a diagnostic status.

Inspect the actual command, run user, PHP binary/SAPI configuration, last execution, locks, execution time and output destination. Compare the expected interval with job duration. An overlapping job or stale lock needs investigation before removal.

Encoder monitor

The Encoder has its own installation and can serve multiple Streamers. Its monitor requests email delivery from the correct originating Streamer; it does not use a Streamer users table or local Streamer mailer.

Queue-idle detection requires a sustained idle condition with waiting work, rather than one observation immediately after a long conversion finishes. A job waiting behind active conversion is not a stalled queue.

Asynchronous state

An accepted start request does not establish successful work. Follow worker startup, lock ownership, progress/state files, errors, retries, output artifact and final consumer. Recovery state must belong to the current job/source rather than an older process sharing a URL or filename.

For payment and storage jobs, distinguish transport retries from business idempotency. For live jobs, identify the exact broadcast/relay before stopping any process. See live streaming, encoding and payments.

Documentation generation did not install cron, execute application jobs, restart services or clear locks.

Clone this wiki locally