php教程

pg_get_notify

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

pg_get_notifyPing 数据库连接

说明

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

pg_get_notify() 取得 SQL 命令 NOTIFY 发送的通告消息。要接收通告消息,必须发送 SQL 命令 LISTEN。如果连接中有通告消息,则数组包含消息名并且返回后端的 PID。如果没有消息则返回 FALSE

参见 pg_get_pid()

Example #1 PostgreSQL NOTIFY 消息

<?php 
$conn 
pg_pconnect("dbname=publisher");
if (!
$conn) {
    echo 
"An error occured.\n";
    exit;
}

// Listen 'author_updated' message from other processes
pq_query($conn'LISTEN author_updated;');
$notify pg_get_notify($conn);
if (!
$notify)
    print(
"No messages\n");
else
    
print_r($notify);
?>

User Contributed Notes

glococo at gmail dot com 17-Jun-2017 08:12
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)

CopyRight © 2008-2022 verySource.Com All Rights reserved. 京ICP备17048824号-1 京公网安备:11010502034788