CRON, очереди и Horizon
Для чего нужен раздел
Эта страница объясняет технической команде, какие фоновые процессы нужны iEXExchanger и почему "сайт открывается" ещё не означает, что обменник готов к работе.
Если не настроить cron, Redis и queue/Horizon, могут не обновляться курсы, не уходить письма, не приходить Telegram-уведомления, не выполняться автовыплаты, не архивироваться заявки и не обновляться аналитика.
Главные процессы
Laravel scheduler
/opt/php84/bin/php полный_путь/artisan schedule:run каждую минуту
Запускает задачи по расписанию
Horizon
php artisan horizon
Выполняет очереди Redis
Redis
системный сервис Redis
Хранит очереди, быстрые данные, presence и кеш
PHP-FPM
PHP 8.4 FPM сервис
Обрабатывает web-запросы
Nginx
системный сервис Nginx
Принимает HTTP/HTTPS и передает запросы в PHP
Почему scheduler каждую минуту
В crontab не нужно вручную добавлять каждую задачу обменника. Добавляется один запуск:
* * * * * /opt/php84/bin/php /var/www/fastpanel_user/data/www/example.com/artisan schedule:run >/dev/null 2>&1Laravel сам решает, какие задачи запускать каждую минуту, каждый час или каждый день.
Для FastPanel важно:
/opt/php84/bin/php
Используется PHP 8.4 FastPanel
Пробел после /opt/php84/bin/php
Между PHP и путем к проекту обязательно должен быть пробел
Полный путь к проекту
Путь должен быть точным, как в FastPanel, и вести к папке с artisan
Не /usr/bin/php
Системный PHP может быть другой версии и ломать команды
Не несколько дублей
Один scheduler каждую минуту достаточно
Что запускает scheduler
Курсы
Обновление источников, BestChange, файлов, history candles
Курсы устареют, XML и форма обмена могут показывать старые данные
Заявки
Пересчет, архивирование, неоплаченные заявки, экспорт заявок
Заявки могут зависать, архив не будет пополняться
Платежи
Webhook, очередь автовыплат, запуск выплат, pending withdrawal
Оплаты и выплаты будут обрабатываться с задержкой
Резервы
Обновление резервов из файла, дневные агрегаты резервов
Резервы могут отличаться от фактических
Уведомления
Telegram-статистика, диагностика, monitoring
Операторы могут не увидеть важные события
Аналитика
Инкрементальный и ночной пересчет витрин
Данные прибыли и статистики будут устаревать
Очистки
Логи, временные экспорты, media trash, old presence
База и storage будут расти
Безопасность
Баны, истечение ролей, trusted proxies reload
Ограничения и доверенные IP могут применяться с задержкой
Очереди Horizon
В проекте используются несколько очередей:
mail-high и mail-low
Письма разной важности
high, default, low
Общие фоновые задачи
media
Обработка медиа и загруженных файлов
order-recount-scan, order-recount
Поиск и пересчет заявок
presence
События присутствия и realtime-аналитика
analytics
Тяжелая аналитика отдельным потоком
Если очередь растёт, нужно проверять не только настройки админки, но и worker-процессы.
Как понять, что проблема в процессах
Все курсы старые
Scheduler не запускается или курсовая задача падает
Письма приходят с большой задержкой
Очередь не обрабатывается или SMTP медленный
Telegram не приходит, хотя бот настроен
Очередь или Telegram-задача не выполняется
Автовыплата не стартует
Очередь, статус заявки, лимит или провайдер
Архив заявок не пополняется
Scheduler или настройка автоархива
Аналитика не обновляется
Очередь analytics или scheduler
Сайт работает, но всё автоматическое стоит
Web-запросы живы, фоновые процессы остановлены
Что проверить техническому специалисту
PHP CLI
php -v
Список задач scheduler
php artisan schedule:list
Ручной запуск scheduler для диагностики
php artisan schedule:run
FastPanel cron
/opt/php84/bin/php полный_путь_к_проекту/artisan schedule:run >/dev/null 2>&1
Статус Horizon
php artisan horizon:status
Статус Redis
systemctl status redis
Статус PHP-FPM
systemctl status php8.4-fpm или имя сервиса в панели
Статус Nginx
nginx -t и статус сервиса
Логи Laravel
Проверять без публикации секретов
Очереди Horizon
Смотреть dashboard Horizon, если доступ разрешен
Что не делать
Запускать несколько одинаковых scheduler cron без понимания
Можно получить дубли задач
Повторять автовыплату вручную без проверки первой попытки
Риск двойной выплаты
Очищать все логи при первой ошибке
Потеряется диагностика
Отключать очереди ради "быстрой проверки"
Ошибки станут менее понятными
Держать Horizon только в SSH-сессии
После закрытия сессии очередь остановится
Ставить слишком частые интервалы курсов
Можно перегрузить сервер или источники
Ответы для AI-чата
"Почему курсы не обновляются?"
"Проверьте режим обновления в Настройки - CRON, последний успешный запуск, затем серверный scheduler, Redis и Horizon. Если все пары старые, вероятно проблема не в одной формуле, а в фоне."
"Почему письма не уходят?"
"Проверьте настройки E-mail, тестовое письмо, включение события, затем очередь Horizon. Если письма стоят в очереди, нужен технический специалист."
"Почему автовыплата зависла?"
"Проверьте статус заявки, лимиты, провайдера, платежный журнал и очередь. Не запускайте повторную выплату, пока не понятно, что первая попытка не ушла."
"Какой cron добавить в FastPanel?"
"Каждую минуту: /opt/php84/bin/php полный_путь_к_проекту/artisan schedule:run >/dev/null 2>&1. Между PHP и путем обязателен пробел, путь должен быть полным, /usr/bin/php не использовать."
"Что должен настроить серверщик?"
"PHP-FPM 8.4, Nginx, базу, Redis, cron через /opt/php84/bin/php .../artisan schedule:run, Horizon/queue под Supervisor или systemd, SSL, права storage/bootstrap/cache и backup."
Связанные разделы
Последнее обновление
Это было полезно?