For the complete documentation index, see llms.txt. This page is also available as Markdown.

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>&1

Laravel сам решает, какие задачи запускать каждую минуту, каждый час или каждый день.

Для 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."

Связанные разделы

Последнее обновление

Это было полезно?