(PHP 8 >= 8.4.0)
Pdo\Pgsql::getNotify — Renvoie une notification asynchrone
$fetchMode = PDO::FETCH_DEFAULT, int $timeoutMilliseconds = 0): array|falseRenvoie un jeu de résultats représentant une notification asynchrone en attente.
fetchModeLe format sous lequel le jeu de résultats doit être, une des constantes suivantes:
timeoutMilliseconds
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.
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.
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', )