CLI · Winter Console

Команда run

run поднимает HTTP-сервер перед роутером ядра. По умолчанию — Swoole (корутины, воркеры), а run dev — встроенный сервер PHP для разработки без дополнительных расширений.

По умолчанию SwooleDev run devАдрес 0.0.0.0:8000

Что такое run и зачем

run — команда запуска веб-сервера проекта.

Проблема. Чтобы приложение отвечало на HTTP, нужен сервер. В разработке хочется поднять его одной командой без настройки Nginx/FPM, а в проде — быстрый асинхронный рантайм.

Решение. run даёт оба: run dev — мгновенный встроенный сервер PHP для локальной разработки, run — Swoole для продакшена. Об этом и раздел.

Два режима

bash
php call run        # Swoole (нужно расширение swoole)
php call run dev    # встроенный сервер PHP (без Swoole)

Адрес по умолчанию — 0.0.0.0:8000.

Swoole требует расширение

run без dev поднимает Swoole и предупредит с выходом, если расширение не установлено (pecl install swoole). Для локальной разработки достаточно run dev.

Опции Swoole (run)

Опция Назначение По умолчанию
--host= Адрес привязки 0.0.0.0
--port= Порт 8000
--workers= Число воркеров (worker_num) авто
--tasks= Число task-воркеров выкл
--max_request= Перезапуск воркера после N запросов выкл
--max_request_grace= Плавный порог перезапуска выкл
-w / --watcher Включить MemoryWatcher выкл
bash
php call run --port=8000 --workers=4 -w
php call run --max_request=5000 --max_request_grace=500

CLI-опции переопределяют значения из Boot::swooleConfig(). При занятом порте Swoole-режим предупреждает и выходит.

Опции dev-сервера (run dev)

Только --host= и --port=.

bash
php call run dev
php call run dev --port=9000

Автоподбор порта

Если ни --host, ни --port не заданы и порт по умолчанию занят, dev-сервер сам переберёт следующие 10 портов. Если порт задан явно — режим «ручной»: при занятом порте команда предупредит и выйдет, без перебора.

Дальше