Pdo\Pgsql::getNotify

(PHP 8 >= 8.4.0)

Pdo\Pgsql::getNotifyDevuelve una notificación asíncrona

Descripción

public function Pdo\Pgsql::getNotify(int $fetchMode = PDO::FETCH_DEFAULT, int $timeoutMilliseconds = 0): array|false

Devuelve un conjunto de resultados que representa una notificación asíncrona pendiente.

Parámetros

fetchMode

El formato en el que debe estar el conjunto de resultados, una de las constantes siguientes:

timeoutMilliseconds
El tiempo de espera para una respuesta, en milisegundos.

Valores devueltos

Si una notificación está pendiente, devuelve una sola fila, en caso contrario devuelve false. La fila tiene un campo message (el nombre del canal) y un campo pid (el identificador de proceso (PID) del backend notificador). Si la notificación lleva una carga útil (payload) no vacía, la fila tiene además un campo payload. Con PDO::FETCH_NUM, estos campos están en los índices 0, 1 y 2.

Errores/Excepciones

Se lanza una ValueError si fetchMode no es una de las constantes PDO::FETCH_* válidas.

Se lanza una ValueError si timeoutMilliseconds es inferior a 0.

Se lanza una E_WARNING cuando timeoutMilliseconds es superior al valor que puede contener un entero firmado de 32 bits, en cuyo caso será el valor máximo de un entero firmado de 32 bits.

Ejemplos

Ejemplo #1 Ejemplo de Pdo\Pgsql::getNotify()

Suscribirse a un canal con LISTEN, luego leer la siguiente notificación pendiente con un tiempo de espera de un segundo.

<?php
$db = new Pdo\Pgsql('pgsql:dbname=test host=localhost', $user, $pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$db->exec('LISTEN messages');
$db->exec("NOTIFY messages, 'hello'");

$notification = $db->getNotify(PDO::FETCH_ASSOC, 1000);
var_export($notification);
?>

Resultado del ejemplo anterior es similar a:

array (
  'message' => 'messages',
  'pid' => 1928,
  'payload' => 'hello',
)

Ver también