Pdo\Pgsql::getNotify
(PHP 8 >= 8.4.0)
Pdo\Pgsql::getNotify — Get asynchronous notification
Description
Returns a result set representing a pending asynchronous notification.
Parameters
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.
Return Values
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.
Errors/Exceptions
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.
Examples
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',
)