스포츠 토토 9.0.23 Tài liệu | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.0 : 빠른 경로 범퍼카 토토 | UP | Chương 31.libpq- C Thư viện | Tiếp theo |
스포츠 토토Ưu đãi Thông báo không đồng bộ quaNghevàThông báolệnh. Một phiên khách đăng ký sự quan tâm của nó đối với một kênh thông báo cụ thể với Thenghelệnh (và có thể dừng lắng nghe vớiUnlistenlệnh). Tất cả các phiên nghe trên một kênh cụ thể sẽ được thông báo không đồng bộ khi aThông báoLệnh với tên kênh đó được thực hiện bởi bất kỳ phiên nào. MỘT"tải trọng"Chuỗi có thể được truyền để giao tiếp dữ liệu bổ sung cho người nghe.
libpqỨng dụng gửiNghe, UnlistenvàThông báoCác lệnh như các lệnh SQL thông thường. Sự xuất hiện củaThông báoTin nhắn sau đó có thể được phát hiện bởi
Gọipqnotifyes
.
hàmpqnotifyes
Trả về
Thông báo tiếp theo từ danh sách thông báo chưa được xử lý
Tin nhắn nhận được từ máy chủ. Nó trả về một con trỏ null nếu
Không có thông báo đang chờ xử lý. Khi một thông báo là
đã trở về từpqnotifyes
, đó là
được coi là xử lý và sẽ bị xóa khỏi danh sách
Thông báo.
pgnotify *pqnotifyes (pgconn *Conn); typedef struct pgnotify char *relname; / * Tên kênh thông báo */ int be_pid; / * Quy trình ID thông báo quy trình máy chủ */ char *thêm; / * Chuỗi tải trọng thông báo */ Pgnotify;
Sau khi xử lý ApgnotifyĐối tượng
Được trả về bởipqnotifyes
, Hãy chắc chắn để
Miễn phí nó vớipqfreemem
. Nó là
đủ để giải phóngpgnotifyCon trỏ; TherelnamevàExtraTrường không đại diện cho riêng biệt
phân bổ. (Tên của các lĩnh vực này là lịch sử; trong
đặc biệt, tên kênh không cần phải làm gì với
Tên quan hệ.)
Ví dụ 31-2Đưa ra một chương trình mẫu minh họa cho việc sử dụng không đồng bộ thông báo.
pqnotifyes
Không thực sự
Đọc dữ liệu từ máy chủ; nó chỉ trả về tin nhắn trước đó
được hấp thụ bởi người kháclibpqHàm. Trong các bản phát hành trước củalibpq, Cách duy nhất để đảm bảo biên lai kịp thời
củaThông báoTin nhắn liên tục
Gửi các lệnh, thậm chí các lệnh trống, sau đó kiểm trapqnotifyes
sau mỗiPQEXEC
. Trong khi điều này vẫn hoạt động, nó là
không được lãng phí sức mạnh xử lý.
Cách tốt hơn để kiểm traThông báoTin nhắn Khi bạn không có lệnh hữu ích để thực thi là gọiPQConsumeInput
, sau đó kiểm trapqnotify
. Bạn có thể sử dụngselect ()
Để chờ dữ liệu đến
từ máy chủ, do đó không sử dụngCPUsức mạnh trừ khi có việc gì đó.
(Nhìn thấyPQSocket
Để lấy tệp
Số mô tả để sử dụng vớiselect ()
.) Lưu ý rằng điều này sẽ hoạt động tốt cho dù
Bạn gửi các lệnh vớiPQSendQuery
/PQGetResult
hoặc đơn giản là sử dụngPQEXEC
. Tuy nhiên, bạn nên nhớ kiểm trapqnotifyes
sau mỗiPQGetResult
hoặcPQEXEC
, để xem có bất kỳ thông báo nào được đưa vào
Trong quá trình xử lý lệnh.