Команда process
Процессы можно запускать не только из кода. Команда process находит
все классы-процессы проекта, показывает, кто из них сейчас работает, и позволяет
запустить, остановить и осмотреть любой — не трогая приложение.
Зачем
Процесс — единица работы вне запроса: импорт, рассылка, пересчёт. Ему нужны операционные действия, которых нет в коде приложения: посмотреть, идёт ли он сейчас, запустить руками после сбоя, остановить перед выкладкой, разобраться, почему он ест процессор.
Команда process даёт ровно это. Что такое процессы и как их писать — на странице
Процессы.
Что есть в проекте
php call process list
php call proc list # то же самое[ Available Processes ]
[P] main.process.ImportProcess ● running [BUSY]
[P] main.process.ReportProcess ○ stopped
[P] main.process.CleanupProcess ● running [idle]
- - - - - - - - - -
[i] 3 defined, 2 running.Список собирается сканированием проекта, поэтому регистрировать процессы нигде не
нужно — достаточно, чтобы класс наследовал Process. Демоны в этот список не
попадают: у них своя команда.
| Обозначение | Значение |
|---|---|
● / ○ |
Работает / остановлен |
[BUSY] |
Сейчас выполняет полезную работу |
[idle] |
Запущен, но простаивает |
Имя класса
Класс указывается точечной записью — тем же способом, что в make и script:
php call proc main.process.ImportProcess statusТочки заменяются на разделители пространств имён, каждый сегмент пишется с
заглавной: main.process.ImportProcess → Main\Process\ImportProcess. Регистр во
вводе значения не имеет, так что main.process.importprocess тоже сработает.
Запуск
php call proc main.process.Import # foreground
php call proc main.process.Import start # то же самое
php call proc main.process.Import start -d # в фонеНа переднем плане — процесс занимает терминал, пишет в него и завершается сам.
Так его удобно отлаживать: видно вывод, Ctrl+C останавливает.
В фоне (-d) — команда открепляет процесс и возвращает управление, напечатав
PID. Терминал можно закрыть.
[✓] Dispatched (background): MainProcessImport
PID 48213Повторный запуск не создаёт второй процесс
Если процесс уже работает, команда об этом скажет и ничего не запустит:
[!] Already running [PID:48213] (2026-08-14 09:12:44).Это тот же механизм блокировки, что защищает процесс от параллельного запуска
изнутри приложения, — файл блокировки в storage/runnable.
Остановка
php call proc main.process.Import stopОтправляется SIGTERM — сигнал корректного завершения. Процесс получает
возможность доработать текущую итерацию, закрыть соединения и выйти сам. Немедленно
он не умирает, и это правильно: незавершённая запись в базу хуже задержки на
секунду.
Состояние
php call proc main.process.Import status[ Process Status ]
main.process.Import Process ● RUNNING
PID 48213
State RUNNING
Activity BUSY
Started 2026-08-14 09:12:44
Uptime 2h 14m
Concurrency 4С флагом -v добавляется потребление ресурсов, снятое у операционной системы:
php call proc main.process.Import status -v[ Resources ]
User winter
PPID 1
CPU 12.4 %
Memory 3.1 % (248.6 MB)
Elapsed 02:14:31Это первое, куда стоит смотреть, когда процесс «висит»: Activity покажет, работает
он или простаивает, а CPU и Memory — во что упёрся.
Все действия
| Команда | Что делает |
|---|---|
list |
Все процессы проекта с текущим состоянием |
<Класс> |
Запуск на переднем плане |
<Класс> start |
То же явно |
<Класс> start -d |
Запуск в фоне |
<Класс> stop |
Корректная остановка (SIGTERM) |
<Класс> status |
Состояние, PID, время работы |
<Класс> status -v |
Дополнительно потребление ресурсов |