Долгоживущий процесс меняет риски
Worker Pulse не получает чистый runtime после каждого сообщения. Статические кэши, соединения и обработчики живут дольше; конфигурация не перечитывается сама; память наблюдается по пакетам. Цикл имеет верхний размер batch и точку проверки остановки.
Ошибка одного повреждённого события не обязана завершить весь worker, а потеря соединения с базой может требовать controlled retry. Политика записана для каждого класса причины.
Graceful stop
Сигнал не место для бизнес-логики
POSIX handler устанавливает флаг или даёт scheduler знать об отмене. Он не начинает транзакцию и не отправляет HTTP. Основной цикл завершает текущую атомарную единицу, сохраняет cursor и закрывает ресурс.
Жёсткое завершение всё равно возможно, поэтому exactly-once не строится на надежде о graceful stop. Идемпотентный ключ и транзакционная запись позволяют безопасно повторить batch.
Каналы CLI
STDOUT содержит отчёт или данные pipeline, STDERR — человекочитаемую диагностику, exit code — компактный машинный исход. Progress bar не печатается в stdout команды, которую вызывает другая программа.
Exit code 0 означает выполненный контракт, отдельные ненулевые коды различают invalid input, временную зависимость и внутренний дефект. Их список документирован и тестируется.
Structured logs и метрики
PSR-3 задаёт интерфейс журнала и placeholders, но схема события принадлежит Pulse. Поля включают batch_id, event_type, outcome, duration_ms и correlation id. Raw payload, password, token и email исключены.
Metric labels имеют ограниченную cardinality: route или event family, но не event id. Counter считает исходы, histogram — latency, gauge — очередь. Trace связывает этапы одного batch, а не заменяет журнал.
Лаборатория
Запустите worker на бесконечном тестовом источнике, отправьте TERM во время batch и проверьте cursor. Затем сформируйте лог и метрики для успеха, invalid event и временной ошибки базы.
- Handler только устанавливает флаг.
- Повтор batch не дублирует данные.
- Labels не содержат произвольные id.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Перелинковка со справочником
Проверка актуальности
- php.nethttps://www.php.net/manual/en/features.commandline.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php-fig.orghttps://www.php-fig.org/psr/psr-3/Первичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
- php.nethttps://www.php.net/manual/en/language.errors.phpПервичный источник для актуализации фактов. Адрес приведён как текст и не является активной ссылкой.
Текст и схемы созданы для этого самоучителя без воспроизведения страниц, иллюстраций и листингов приложенной книги. Проверено: .