<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 31.8\. 異步通知 PostgreSQL通過`LISTEN`和`NOTIFY` 命令提供對異步通知的支持。一個客戶端會話用`LISTEN`命令注冊一個它感興趣的通知條件 (也可以用`UNLISTEN`命令停止監聽)。所有正在監聽某一通知條件的會話在該條件名的 `NOTIFY`(通知)被任何會話執行后都將被異步地通知。 一個"payload"可以向聽眾傳達額外的數據。 libpq應用把`LISTEN`,`UNLISTEN` 和`NOTIFY`命令作為普通的 SQL 命令提交。隨后通過調用 `PQnotifies`可以偵測到`NOTIFY`消息的到達。 函數`PQnotifies`從一個來自服務器的未處理的通知信息列表中返回下一條通知。 如果沒有未處理的信息則返回 NULL 指針。一旦`PQnotifies`返回一條通知, 該通知會被認為已處理并且將被從通知列表中刪除。 ``` PGnotify *PQnotifies(PGconn *conn); typedef struct pgNotify { char *relname; /* 通知的通道名字 */ int be_pid; /* 通知服務器進程的進程ID */ char *extra; /* 通知負載字符串 */ } PGnotify; ``` 在處理完`PQnotifies`返回的`PGnotify`對象后, 別忘了用`PQfreemem`把它釋放。釋放`PGnotify` 指針就足夠了;`relname`和`extra` 字段并未代表獨立分配的內存。(這些領域的名稱是歷史性的,尤其是頻道名稱與名稱沒有什么關系。) [Example 31-2](#calibre_link-2082)給出了一個簡單的程序,舉例說明異步通知的使用。 `PQnotifies`實際上并不讀取服務器數據;它只是返回被前面的另一個 libpq函數吸收的信息。在以前的libpq 版本里,周期性的收到`NOTIFY`信息的唯一方法是持續的提交命令, 即使是空查詢也可以,并且在每次`PQexec`后檢查`PQnotifies`。 現在這個方法也還能工作,不過我們認為它太浪費處理器時間而廢棄了它。 在你沒有可用的命令提交時檢查`NOTIFY`消息的更好的方法是調用 `PQconsumeInput`,然后檢查`PQnotifies`。 你可以使用`select()`來等待服務器數據的到達, 這樣在沒有數據可處理時可以不浪費CPU時間。(參閱 `PQsocket`獲取用于`select()`的文件描述符。) 注意這種方法不管你使用`PQsendQuery`/`PQgetResult` 還是簡單的`PQexec`來執行命令都能工作。不過,你應該記住在每次 `PQgetResult`或`PQexec`后檢查 `PQnotifies`,看看在處理命令的過程中是否有通知到達。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看