ScotlandPHP

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. 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
0
glococo at gmail dot com
4 months 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