(PHP 8 >= 8.4.0)
Pdo\Pgsql::getNotify — Get asynchronous notification
$fetchMode = PDO::FETCH_DEFAULT, int $timeoutMilliseconds = 0): array|falseReturns a result set representing a pending asynchronous notification.
fetchModeThe format the result set should be returned as, one of the following constants:
timeoutMilliseconds
If a notification is pending, returns a single row, otherwise returns
false. The row has a message field (the channel name)
and a pid field (the process ID of the notifying backend).
If the notification carries a non-empty payload, the row also has a
payload field. With PDO::FETCH_NUM,
these fields are at indexes 0, 1, and
2.
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.
Example #1 Pdo\Pgsql::getNotify() example
Subscribe to a channel with LISTEN, then read the next
pending notification with a one-second timeout.
<?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);
?>The above example will output something similar to:
array ( 'message' => 'messages', 'pid' => 1928, 'payload' => 'hello', )