• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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)

    上篇:pg_free_result()

    下篇:pg_get_pid()