Pdo\Pgsql::getNotify

(PHP 8 >= 8.4.0)

Pdo\Pgsql::getNotifyRenvoie une notification asynchrone

Description

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

Renvoie un jeu de résultats représentant une notification asynchrone en attente.

Liste de paramètres

fetchMode

Le format sous lequel le jeu de résultats doit être, une des constantes suivantes:

timeoutMilliseconds
Le temps d'attente pour une réponse, en millisecondes.

Valeurs de retour

Si une notification est en attente, retourne une seule ligne, sinon retourne false. La ligne possède un champ message (le nom du canal) et un champ pid (l'identifiant du processus du backend émetteur). Si la notification transporte une charge utile non vide, la ligne possède également un champ payload. Avec PDO::FETCH_NUM, ces champs se trouvent aux indices 0, 1 et 2.

Erreurs / Exceptions

Une ValueError est lancée si fetchMode n'est pas une des constantes PDO::FETCH_* valides.

Une ValueError est lancée si timeoutMilliseconds est inférieur à 0.

Une Warning est lancée si timeoutMilliseconds est supérieur à la valeur qui peut être contenue dans un entier signé 32 bits, auquel cas ce sera la valeur maximale d'un entier signé 32 bits.

Exemples

Exemple #1 Exemple avec Pdo\Pgsql::getNotify()

S'abonner à un canal avec LISTEN, puis lire la prochaine notification en attente avec un délai d'attente d'une seconde.

<?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);
?>

Résultat de l'exemple ci-dessus est similaire à :

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

Voir aussi