pg_get_notify()
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
Ping 数据库连接
说明
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);
?>
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)