Cron و Scheduled Tasks
> version: 1.6 | last_updated: 2026-09-28 | audience: admin
Laravel Scheduler
در `bootstrap/app.php` تنظیم شده:
| زمان | Command |
|------|---------|
| هر دقیقه | `provisioning:process-queue` (ساخت سرویس از صف؛ حداکثر ۲۰ job) |
| 06:00 | `billing:process-subscription-renewals` |
| 09:00 | `billing:send-invoice-reminders` |
| 23:59 | `billing:process-dunning` (تعلیق در ساعت ۲۳:۵۹ تاریخ اتمام، سپس جمعآوری) |
| هر دقیقه | `billing:process-hourly` (فقط مشتریهایی که زمان پوشش ساعتیشان رسیده) |
| هر ساعت | `billing:refresh-usd-rates` (فقط شرکتهایی که بازهشان رسیده نرخ میگیرند؛ لاگ در پنل سوپرادمین) |
Crontab (WHM/cPanel)
```bash
* * * * * cd /home/bsshostkhaneh/bss && /usr/local/bin/ea-php83 artisan schedule:run >> /dev/null 2>&1
```
بدون این crontab، صف ساخت سرویس جلو نمیرود (مگر اجرای دستی دستور).
تست دستی
```bash
php artisan schedule:list
php artisan provisioning:process-queue --limit=20
php artisan billing:process-subscription-renewals
php artisan billing:send-invoice-reminders
php artisan billing:process-dunning
```
لاگ
هر اجرای کرانهای زمانبندیشده در **گزارشگیری → لاگ کران سیستم** ثبت میشود: ساعت اجرا، نام کران، نتیجه، مشتری، شماره سرویس، محصول و شرح. جزئیات در [system-cron-log.md](./system-cron-log.md).
لاگ `billing:refresh-usd-rates` در گزارش شرکت نیست. همان ردیفها برای همه شرکتها در پنل سوپرادمین، منوی **لاگ نرخ دلار**، دیده میشود.