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),
]);
}
}