Pdo\Pgsql::getNotify
(PHP 8 >= 8.4.0)
Pdo\Pgsql::getNotify — Recebe notificação assíncrona
Descrição
Retorna um conjunto de resultados que representa uma notificação assíncrona pendente.
Parâmetros
fetchMode
-
O formato como o conjunto de resultados deve ser retornado,
uma das seguintes constantes:
timeoutMilliseconds
-
O tempo de espera por uma resposta, em milissegundos.
Valor Retornado
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.
Erros/Exceções
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.
Exemplos
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',
)