PHP 8.5.2 Released!

Pdo\Pgsql::getNotify

(PHP 8 >= 8.4.0)

Pdo\Pgsql::getNotifyGet asynchronous notification

Descrizione

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

Returns a result set representing a pending asynchronous notification.

Elenco dei parametri

fetchMode

The format the result set should be returned as, one of the following constants:

timeoutMilliseconds
The length of time to wait for a response, in milliseconds.

Valori restituiti

If one or more notifications is pending, returns a single row, with fields message and pid, otherwise returns false.

Errori/Eccezioni

A ValueError is thrown if fetchMode is not one of the valid PDO::FETCH_* constants.

A ValueError is thrown if timeoutMilliseconds is less than 0.

A E_WARNING is raised when timeoutMilliseconds is greater than the value that can be contained in a signed 32-bit integer, in which case it will be the maximum value of a signed 32-bit integer.

Vedere anche:

add a note

User Contributed Notes 1 note

up
0
sage at sage dot sk
8 days ago
This page needs an example to understand that you **need** to explicitly call LISTEN before using getNotify, like shown in https://www.php.net/manual/en/function.pg-get-notify.php

<?php

$db = new PDO($dsn, $user, $password, $options);
$db->query('LISTEN test');
$notification = $db->pgsqlGetNotify(PDO::FETCH_ASSOC, 10000);

// or

$db = new Pdo\Pgsql($dsn, $user, $password, $options);
$db->query('LISTEN test');
$notification = $db->getNotify(PDO::FETCH_ASSOC, 10000);

// now you can call NOTIFY elsewhere
// PG> NOTIFY test, 'payload string';
var_dump($notification);

?>

array(3) {
  ["message"]=>
  string(4) "test"
  ["pid"]=>
  int(123565)
  ["payload"]=>
  string(14) "payload string"
}

If you called NOTIFY before calling LISTEN, nothing will be returned!

You receive the first notification only, and you have to call getNotify again. And call LISTEN again if DB connection drops.
To Top