Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

MongoDB\Client::addSubscriber()

Nuevo en la versión 1.18.

MongoDB\Client::addSubscriber()

Registra un suscriptor de eventos de supervisión con este cliente. El suscriptor será notificado de todos los eventos de este Cliente.

function addSubscriber(MongoDB\Driver\Monitoring\Subscriber $subscriber): void
$subscriber : MongoDB\Driver\supervisión\Subscriber
Un suscriptor de eventos de supervisión para registrar con este Cliente.

MongoDB\Exception\InvalidArgumentException por errores relacionados con el análisis de parámetros u opciones.

MongoDB\driver\Exception\InvalidArgumentException si sucriptor es MongoDB\driver\supervisión\LogSubscriber, ya que los registradores solamente pueden registrarse globalmente con MongoDB\driver\supervisión\addSubscriber.

Si $subscriber ya está registrado con este Cliente, esta función no hará nada. Si $subscriber también está registrado globalmente, aún solo será notificado una vez de cada evento para este Cliente.

Cree una MongoDB\driver\supervisión\CommandSubscriber que registre todos los eventos:

<?php use MongoDB\Driver\Monitoring\CommandSubscriber;use MongoDB\Driver\Monitoring\CommandStartedEvent;use MongoDB\Driver\Monitoring\CommandSucceededEvent;use MongoDB\Driver\Monitoring\CommandFailedEvent; class LogCommandSubscriber implements CommandSubscriber{ private $stream; public function __construct($stream) { $this->stream = $stream; } public function commandStarted(CommandStartedEvent $event): void { fwrite($this->stream, sprintf( 'Started command #%d "%s": %s%s', $event->getRequestId(), $event->getCommandName(), Document::fromPHP($event->getCommand())->toCanonicalExtendedJSON(), PHP_EOL, )); } public function commandSucceeded(CommandSucceededEvent $event): void { fwrite($this->stream, sprintf( 'Succeeded command #%d "%s" in %d microseconds: %s%s', $event->getRequestId(), $event->getCommandName(), $event->getDurationMicros(), json_encode($event->getReply()), PHP_EOL, )); } public function commandFailed(CommandFailedEvent $event): void { fwrite($this->stream, sprintf( 'Failed command #%d "%s" in %d microseconds: %s%s', $event->getRequestId(), $event->getCommandName(), $event->getDurationMicros(), $event->getError()->getMessage(), PHP_EOL, )); }}

El suscriptor luego se puede registrar con un Cliente:

<?php $client = new MongoDB\Client();$subscriber = new LogCommandSubscriber(STDERR); $client->addSubscriber($subscriber); $client->test->users->insertOne(['username' => 'alice']);

El código anterior guardará lo siguiente en la salida stderr:

Started command #1 "insert": { "insert" : "users", "ordered" : true, "$db" : "test", "lsid" : { "id" : { "$binary" : { "base64" : "dKTBhZD7Qvi0vUhvR58mCA==", "subType" : "04" } } }, "documents" : [ { "username" : "alice", "_id" : { "$oid" : "655d1fca12e81018340a4fc2" } } ] }Succeeded command #1 "insert" in 876 microseconds: {"n":1,"ok":1}