Обслуживание: одна строка cron
Что именно перестаёт работать без планировщика и почему постоянный обработчик очереди магазину не нужен.
На этой странице
Магазину нужна ровно одна строка в планировщике хостинга. Всё остальное он делает сам — постоянно работающих служб, supervisor и отдельного обработчика очереди не требуется.
* * * * * cd /путь/к/магазину && php artisan schedule:run
Строку с уже подставленным путём показывает последний шаг установщика. Добавьте её в разделе «Cron» панели хостинга — там это обычно «Добавить задание», периодичность «каждую минуту».
Что перестаёт работать без неё
Магазин продолжает открываться и принимать заказы, поэтому пропажу замечают не сразу — обычно по жалобе покупателя, который не получил письмо. Без планировщика не работает:
- письма и сообщения покупателям — о заказе, оплате, отправке;
- импорт и выгрузки по расписанию, обновление прайс-листов;
- включение и выключение акций по сроку, пересчёт цен;
- проверка лицензии и применение обновлений;
- автоматические резервные копии;
- перенос каталога с другой платформы;
- закрытие смены на кассе и обновление данных служб доставки.
Работает ли планировщик, видно в панели управления: «Системный» → «Диагностика». Магазин отмечает там каждый свой запуск, поэтому ответ точный — это не совет «настройте cron», а проверка того, что он действительно вызывается.
Очередь задач
Долгие дела магазин не выполняет во время нажатия кнопки — он ставит их в очередь: письма и SMS, импорт и экспорт, пересчёт каталожных цен, применение обновлений, переезд с другой платформы, нарезка больших фотографий.
Разбирает очередь тот же планировщик, последней задачей каждой минуты: он забирает оставшееся время (около пятидесяти секунд) и выполняет задания одно за другим. Поэтому отдельный постоянный процесс не нужен, и магазин одинаково работает на обычном хостинге и на своём сервере.
Сколько заданий ждёт очереди — видно там же, в диагностике. Если число растёт и не уменьшается, планировщик не запускается: проверьте строку cron.
На своём сервере постоянный обработчик очереди тоже допустим и даже быстрее: задания начинают выполняться сразу, а не в начале следующей минуты. Но помните — такой процесс держит в памяти код той версии, с которой он запустился, и после обновления магазина его нужно перезапускать.
Задачи, которые магазин ставит себе сам
Отдельно настраивать их не нужно, но полезно знать, что происходит:
| Когда | Что делает |
|---|---|
| каждую минуту | отмечает, что планировщик жив, и разбирает очередь задач |
| каждые пять минут | завершает рассылки, у которых кончился срок |
| каждые десять минут | включает и выключает акции по расписанию |
| каждые пятнадцать минут | обновляет состояние фискальных чеков |
| каждый час | выполняет импорт и выгрузки, у которых подошло время |
| дважды в сутки | проверяет состояние лицензии |
| ночью | снимает резервные копии, обновляет курсы валют, пересчитывает группы покупателей |
Если хостинг ограничивает запуск программ
Часть хостингов запрещает приложениям запускать отдельные программы. Магазин это определяет сам и переходит в режим, где выполняет задачи внутри своего процесса — ничего настраивать не нужно.
Если запуск программ формально разрешён, но всё равно не работает (так бывает на
некоторых панелях), переведите магазин в этот режим вручную. Добавьте в файл
.env строку:
CARTIX_SPAWN_PROCESSES=false
Единственное, что при этом действительно теряется, — автоматические копии базы данных: их снимает отдельная программа сервера, и заменить её магазин не может. Копии можно продолжать делать средствами хостинга.