Jobs & Scheduling
Long-running operations run as Laravel queue jobs. The scheduler in routes/console.php triggers backup, healthcheck, update, integrity, metrics, and domain-whois commands on a cron.
Queue jobs
| Job | Path | Purpose |
|---|---|---|
| ProvisionSiteJob | app/Jobs/ProvisionSiteJob.php | Provisions new site via Provisioner |
| CloneSiteJob | app/Jobs/CloneSiteJob.php | Clones site via CloneEngine |
| BackupSiteJob | app/Jobs/BackupSiteJob.php | Creates DB or uploads backup |
| RestoreSiteJob | app/Jobs/RestoreSiteJob.php | Restores from Backup |
| RunHealthcheckJob | app/Jobs/RunHealthcheckJob.php | Runs HealthcheckService for site(s) |
| RunUpdateJob | app/Jobs/RunUpdateJob.php | Runs UpdateService for site(s) |
| IntegrityCheckJob | app/Jobs/IntegrityCheckJob.php | Runs IntegrityCheckService for a site |
| SyncCloudflareDnsJob | app/Jobs/SyncCloudflareDnsJob.php | Syncs Cloudflare A records |
| CheckDomainWhoisJob | app/Jobs/CheckDomainWhoisJob.php | Domain WHOIS checks (if used) |
Schedule (routes/console.php)
| Command | Schedule |
|---|---|
wphoster:run-backups db | Daily at 02:00 |
wphoster:run-backups uploads | Daily at 03:00 |
wphoster:purge-expired-backups | Daily at 04:00 |
wphoster:run-healthchecks | Every 10 minutes |
wphoster:run-updates --staging-first | Daily at 01:00 |
wphoster:run-integrity-checks | Daily at 06:00 |
wphoster:collect-metrics | Hourly |
wphoster:check-domains-whois | Daily at 05:00 |
Artisan commands
Commands live under app/Console/Commands/. Key ones:
wphoster:run-backups db|uploads— Run database or uploads backups for all siteswphoster:run-healthchecks— Run healthcheckswphoster:run-updates --staging-first— Run updates (staging before production)wphoster:run-integrity-checks— Run core checksumswphoster:purge-expired-backups— Delete expired backup records/fileswphoster:verify-backups— Verify backup integritywphoster:collect-metrics— Collect disk/DB metricswphoster:regenerate-nginx-configs— Regenerate Nginx configs for all sites
Ensure the scheduler runs (e.g. php artisan schedule:work in dev or cron * * * * * php /path/artisan schedule:run in production) and a queue worker is running (php artisan queue:work).