PHP 7.2.7 Released

pg_get_notify

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

pg_get_notifyGibt eine SQL NOTIFY-Nachricht zurück

Beschreibung

array pg_get_notify ( resource $connection [, int $result_type ] )

pg_get_notify() gibt eine NOTIFY-Nachricht zurück, die vom SQL-Kommando NOTIFY gesendet wurde. Um diese Nachrichten zu erhalten, muss zuvor das SQL-Kommando LISTEN ausgeführt worden sein.

Parameter-Liste

connection

PostgreSQL-Verbindungskennung.

result_type

Ein optionaler Parameter bestimmt, wie das zurückgegebene array indiziert werden soll. result_type ist eine Konstante, die einen der folgenden Werte annehmen kann: PGSQL_ASSOC, PGSQL_NUM oder PGSQL_BOTH. Wenn pg_get_notify() mit PGSQL_NUM aufgerufen wird, wird ein numerisches Array zurückgegeben, mit PGSQL_ASSOC wird ein assoziatives Array zurückgegeben, während der Standardwert PGSQL_BOTH ein Array mit beiden Indizes zurückgibt.

Rückgabewerte

Ein array, das die NOTIFY-Nachricht und die PID des Datenbankprozesses enthält. Von PHP 5.4.0 an, falls vom Server unterstützt, enthält das Array ebenfalls die Serverversion und die Nutzdaten. Existiert kein NOTIFY, wird FALSE zurückgegeben.

Beispiele

Beispiel #1 PostgreSQL NOTIFY-Nachricht

<?php
$conn 
pg_pconnect("dbname=publisher");
if (!
$conn) {
  echo 
"Konnte keine Verbindung aufbauen.\n";
  exit;
}

// Listen-Kommando 'author_updated', um Benachrichtigungen
// von anderen Prozessen zu erhalten
pg_query($conn'LISTEN author_updated;');
$notify pg_get_notify($conn);
if (!
$notify) {
  echo 
"Keine Nachrichten\n";
} else {
  
print_r($notify);
}
?>

Siehe auch

add a note add a note

User Contributed Notes 1 note

up
1
glococo at gmail dot com
1 year ago
Instant yet Simple PHP notification with HTML5 Server-Sent Events

sse.php
<?php
$dbconn
= new PDO("pgsql:host=localhost;dbname=mydb", "pduser", "userpass");
$dbconn->exec('LISTEN "channel_name"');   // those doublequotes are very important

header("X-Accel-Buffering: no"); // disable ngnix webServer buffering
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
ob_end_flush();  // close PHP output buffering
$inc=0;

while (
1) {
 
$result = "";
 
// wait for one Notify 10seconds instead of using sleep(10)
 
$result = $dbconn->pgsqlGetNotify(PDO::FETCH_ASSOC, 10000);

  if (
$result ) {
        echo
"id: $inc\ndata: ".stripslashes(json_encode($result))."\n\n";
       
$inc++;
  }

 
flush();
}
?>

Tested with HTML+JS sample file from Mozilla web site (ssedemo.php)
To Top