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