Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản kèo bóng đá euro được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản kèo bóng đá euro được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

27.7. kèo bóng đá euro bộ

PostgreSQLƯu đãi kèo bóng đá euro bộ quaNghekèo bóng đá eurolệnh. Một phiên khách đăng ký sự quan tâm của nó trong một điều kiện kèo bóng đá euro cụ thể vớiNghelệnh (và có thể dừng lắng nghe vớiUnlisten11384_11489kèo bóng đá eurolệnh với tên điều kiện đó được thực hiện bởi bất kỳ phiên. KHÔNG Thông tin bổ sung được chuyển từ kèo bóng đá euro cho người nghe. Do đó, thông thường, bất kỳ dữ liệu thực tế nào cần Truyền đạt được chuyển qua bảng cơ sở dữ liệu. Thông thường, Tên điều kiện giống như bảng liên kết, nhưng nó là không cần thiết để có bất kỳ bảng liên kết nào.

libpqỨng dụng gửingheUndistenCác lệnh như các lệnh SQL kèo bóng đá euro thường. Các Sự xuất hiện củakèo bóng đá euroTin nhắn có thể sau đó được phát hiện bằng cách gọipqnotifyes.

hàmpqnotifyesTrả về kèo bóng đá euro tiếp theo từ danh sách kèo bóng đá euro 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ó kèo bóng đá euro đang chờ xử lý. Khi một kèo bóng đá euro là đã trở về từpqnotifyes, đó là được coi là xử lý và sẽ bị xóa khỏi danh sách kèo bóng đá euro.

pgnotify *pqnotifyes (pgconn *Conn);

typedef struct pgnotify 
    char *relname;              / * Tên điều kiện kèo bóng đá euro */
    int be_pid;                / * xử lý ID của quá trình máy chủ */
    char *thêm;                / * Tham số kèo bóng đá euro */
 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ỏ; TherelnameExtraTrường kèo bóng đá euro đại diện cho riêng biệt phân bổ. (Hiện tại,ExtraTrường kèo bóng đá euro được sử dụng và sẽ luôn chỉ vào một chuỗi trống.)

Lưu ý:inPostgreSQL6.4 trở lên,be_pidlà của máy chủ kèo bóng đá euro quá trình, trong khi trong các phiên bản trước đó, nó luôn luôn làPIDcủa máy chủ của riêng bạn quá trình.

Ví dụ 27-2Đưa ra một chương trình mẫu minh họa cho việc sử dụng không đồng bộ kèo bóng đá euro.

pqnotifyeskèo bóng đá euro 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ủakèo bóng đá euroTin nhắn liên tục Gửi các lệnh, thậm chí các lệnh trống, sau đó kiểm trapqnotifyessau mỗiPQEXEC. Trong khi điều này vẫn hoạt động, nó là kèo bóng đá euro được lãng phí sức mạnh xử lý.

Cách tốt hơn để kiểm trakèo bóng đá euroTin nhắn Khi bạn kèo bóng đá euro có lệnh hữu ích để thực thi là gọiPQConsumeInput, sau đó kiểm trapqnotifyes. Bạn có thể sử dụngselect ()Để chờ dữ liệu đến từ máy chủ, do đó kèo bóng đá euro sử dụngCPUsức mạnh trừ khi có việc gì đó. (Nhìn thấyPQSocketĐể có được 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/PQGetResulthoặc đơn giản là sử dụngPQEXEC. Tuy nhiên, bạn nên nhớ kiểm trapqnotifyessau mỗi15523_15536hoặcPQEXEC, để xem có bất kỳ kèo bóng đá euro nào được đưa vào Trong quá trình xử lý lệnh.