rpc.async_output

rpc.async_output

Назва події

rpc.async_output

Константа

RpcEvent::OUTPUT_ASYNC

Клас

RpcAsyncOutputEvent

Властивості

RpcRequest $rpcRequest, RpcBatchRequest $batchRequest, string $output

Генерується в батьківському процесі batch у процесному режимі (batch.process: true), коли дочірній процес ufo:rpc:process завершився. $output — сирий вивід процесу (JSON відповіді).

Не генерується в inline-режимі batch і для одиночних запитів.

Вбудовані лістенери

Пріоритет Лістенер Що робить
10 AsyncServerEventListener::process Розбирає $output у відповідь (порожній або невалідний вивід — помилка), додає її в batch і завжди зупиняє поширення

Що можна змінити

  • Лістенер з пріоритетом вище 10 може змінити $event->output до розбору.
  • Лістенери з пріоритетом 10 і нижче не викликаються.
  • Не зупиняйте поширення вище 10: елемент не отримає відповіді й, найімовірніше, зникне з результату batch.

Приклади використання

  • діагностика: логування сирого виводу дочірніх процесів, щоб знайти причину «Asynchronous request does not respond»;
  • метрики тривалості й розміру відповідей елементів batch.
#[AsEventListener(RpcEvent::OUTPUT_ASYNC, priority: 100)]
final class BatchOutputLogger
{
    public function __construct(private LoggerInterface $logger) {}

    public function __invoke(RpcAsyncOutputEvent $event): void
    {
        $this->logger->debug('batch item output', [
            'method' => $event->rpcRequest->getMethod(),
            'bytes' => strlen($event->output),
        ]);
    }
}