Cron and queue
Cron entry
In cPanel → Cron Jobs, add one entry (replace /home/USER with your real path):
* * * * * php /home/USER/calbok/artisan schedule:run >> /dev/null 2>&1
That single line drives everything: queue drain, reminder dispatch, payment reconciliation, recurring-appointment generation, NPS emails, and the cron beacon.
Use the exact PHP path from your installer's Done screen or hosting panel (RunCloud,
cPanel MultiPHP, etc.) — do not assume /usr/bin/php is correct.
Commands you need
Most day-to-day work is in the browser. These Artisan commands are the ones buyers actually use:
| Command | When |
|---|---|
| (web installer) | First install — open /install in the browser (no terminal). |
php artisan migrate --force |
After uploading a new release if you are not using Admin → Diagnostics → Apply update. |
php artisan schedule:run |
Called every minute by cron — drives the queue worker and scheduled jobs. |
php artisan queue:work --stop-when-empty |
Optional manual drain; on shared hosting schedule:run already processes the database queue. |
php artisan backup:run (if enabled) |
Manual backup when your host supports the backup package. |
php artisan demo:reset |
Demo servers only (DEMO_MODE=true) — resets demo data and removes signup businesses. |
php artisan calbok:operator-password {email} |
Recover Operator access when email login is unavailable. |
Cache store and queue
Required stores
| Setting | Shared hosting | VPS |
|---|---|---|
CACHE_STORE |
database |
database or redis |
QUEUE_CONNECTION |
database |
database or redis |
SESSION_DRIVER |
database |
database or redis |
Never set
CACHE_STORE=file. The file driver uses no cross-process lock and silently undercounts rate limiters under concurrent PHP-FPM workers. The Diagnostics Rate-limiter cache store probe will FAIL and block the installer iffileis set.
Never set
QUEUE_CONNECTION=sync. The sync driver runs jobs inline in the HTTP request — booking confirmations, reminders, and payment webhooks will block the user's browser and cannot be retried on failure.