Pdo\Pgsql::getNotify

(PHP 8 >= 8.4.0)

Pdo\Pgsql::getNotifyGet asynchronous notification

Description

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

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',
)

See Also