(PHP 8 >= 8.4.0)
Pdo\Pgsql::getNotify — Recebe notificação assíncrona
$fetchMode = PDO::FETCH_DEFAULT, int $timeoutMilliseconds = 0): array|falseRetorna um conjunto de resultados que representa uma notificação assíncrona pendente.
fetchModeO formato como o conjunto de resultados deve ser retornado, uma das seguintes constantes:
timeoutMilliseconds
Se uma notificação estiver pendente, retorna uma única linha, caso contrário
retorna false. Alinha tem um campo message (o nome do canal)
e um campo pid (o ID do processo do backend que envia a notificação).
Se a notificação traz uma carga não vazia, a linha também tem um
campo payload. Com PDO::FETCH_NUM,
estes campos estão nos índices 0, 1 e
2.
Uma exceção ValueError será lançada se
fetchMode não for uma das constantes
PDO::FETCH_*
válidas.
Uma exceção ValueError será lançada se
timeoutMilliseconds for menor que 0.
Um E_WARNING é gerado quando
timeoutMilliseconds é maior que o valor
que pode estar contido em um inteiro com sinal de 32 bits; nesse caso, será o
valor máximo de um inteiro com sinal de 32 bits.
Exemplo #1 Exemplo de Pdo\Pgsql::getNotify()
Inscreva em um canal com LISTEN e então leia a próxima
notificação pendente com um tempo limite de um 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);
?>O exemplo acima produzirá algo semelhante a:
array ( 'message' => 'messages', 'pid' => 1928, 'payload' => 'hello', )