ThePQEXECchức năng là đủ cho
PQEXECchờ truy tỷ lệ kèo bóng đá tối nay
Vì điều khiển được chôn bên trongPQEXEC, rất khó để quyết định
PQEXECchỉ có thể trả lại mộtSQLCác lệnh, tất cả trừPQEXEC.
Các ứng dụng tỷ lệ kèo bóng đá tối nay thích những hạn chế này có thể sử dụngPQEXECISPQSendQueryvàPQGetResult.
Các chương trình cũ hơn sử tỷ lệ kèo bóng đá tối nay chức năng này cũng nhưpqputlinevàpqputnbytescó thể chặn chờ để gửi dữ tỷ lệ kèo bóng đá tối nay đếnpqsetNonblockingđã được thêm vào.
Các ứng tỷ lệ kèo bóng đá tối nay cũ có thể bỏ qua việc sử tỷ lệ kèo bóng đá tối naypqsetNonblockingvà có được những người già có khả năngpqsetNonblockingĐể đạt được hoàn toàn
pqsetNonblockingĐặt trạng thái của
int pqsetNonblocking (pgconn *Conn)Hàm này sẽ đảm bảo rằng các cuộc gọi đếnpqputline,pqputnbytes,PQSendQueryvàpqendcopysẽ tỷ lệ kèo bóng đá tối nay chặn mà thay vào đó trả lại
Khi kết nối cơ sở dữ liệu được đặt thành chế độ tỷ lệ kèo bóng đá tối nay chặnPQEXECđược gọi, nó sẽPQEXECHoàn thành.
Thêm libpq dự kiến sẽ được làm an toàn chopqsetNonblockingChức năng ở gần
pqisnonblockingTrả về
int pqisnonblocking (const pgconn *Conn)Trả về true nếu kết nối được đặt thành chế độ tỷ lệ kèo bóng đá tối nay chặn,
PQSendQueryGửi truy tỷ lệ kèo bóng đá tối nay choPostgrestỷ lệ kèo bóng đá tối nay chờ đợi
int pqsendQuery (pgconn *Conn,Sau khi gọi thành côngPQSendQuery, gọiPQGetResultMột hoặc nhiều lần để có được truy tỷ lệ kèo bóng đá tối nayPQSendQuerycó thể tỷ lệ kèo bóng đá tối nay được gọiPQGetResultđã trả lại null, chỉ ra rằng
PQGetResultĐợi cái tiếp theoPQSendQuery, và
PGRESULT *PQGetResult (PGConn *Conn);PQGetResultphải được gọiPQGetResultsẽ chỉ trả lại null cùng một lúc.) MỗiPQGetResultnênPQClearKhi được thực hiện với nó. Lưu ý rằngPQGetResultsẽ chỉ chặn nếu aPQConsumeInput.
sử tỷ lệ kèo bóng đá tối nayPQSendQueryvàPQGetResultgiải quyết một trongPQEXECS tỷ lệ kèo bóng đá tối nay đề: Nếu chuỗi truy tỷ lệ kèo bóng đá tối nay chứaSQLCác lệnh, kết quả củaPQGetResultvẫn sẽ gây raSQLlệnh. Điều này có thể tránh được bằng cách sử tỷ lệ kèo bóng đá tối nay đúng
PQConsumeInputNếu đầu vào là
int pqconsumeinput (pgconn *Conn);PQConsumeInputThông thường trả về 1pqerrormessageISPQConsumeInput, ứng tỷ lệ kèo bóng đá tối nay có thể kiểm trapqisbusyvà/hoặcpqnotifyesĐể xem trạng thái của họ có thay đổi tỷ lệ kèo bóng đá tối nay.
PQConsumeInputcó thể được gọi chẵnChọn(2) Chỉ dẫn sẵn sàng đọc đi. CácPQConsumeInputĐể xóaChọnĐiều kiện ngay lập tức, sau đó kiểm tra
PQISBusyTrả về 1 nếu truy tỷ lệ kèo bóng đá tối nay làPQGetResultsẽPQGetResultCó thể được gọi với sự đảm bảo tỷ lệ kèo bóng đá tối nay
int pqisbusy (pgconn *Conn);pqisbusybản thân nó sẽ tỷ lệ kèo bóng đá tối nay cố gắngPQConsumeInputphải được gọi trước hoặc bận rộn
pqflushcố gắng xóa bất kỳ dữ tỷ lệ kèo bóng đá tối nay nào
int pqflush (pgconn *Conn);PQFLUSHcần được gọi trênChọnĐể xác định xem có phản hồi nào tỷ lệ kèo bóng đá tối nay. Nếu 0PQSetNonblockingCó nhu cầu về điều này.
PQSocketlấy tệp
int pqsocket (const pgconn *Conn);PQSocketnên được sử tỷ lệ kèo bóng đá tối nay để có đượcChọn(2). Điều này cho phép một ứng tỷ lệ kèo bóng đá tối nayChọn(2) chỉ ra rằng dữ tỷ lệ kèo bóng đá tối nay có thể được đọc từPQConsumeInputnên được gọi để đọc dữ tỷ lệ kèo bóng đá tối nay; sau đó,pqisbusy,PQGetResult,,pqnotifyescó thể được sử tỷ lệ kèo bóng đá tối nay để xử lý
Kết nối tỷ lệ kèo bóng đá tối nay chặn (đã sử dụngpqsetNonblocking) tỷ lệ kèo bóng đá tối nay nên sử dụngChọncho đến khiPQFLUSHđã trả về 0 cho biết tỷ lệ kèo bóng đá tối nay có dữ liệu được đệm
Một mặt trận điển hình sử tỷ lệ kèo bóng đá tối nay các chức năng này sẽ có một vòng lặp chínhChọn(2) để chờ tất cảChọnCác điều khoản có thể đọc được trên tệpPQSocket. KhiPQConsumeInputĐể đọc đầu vào. Sau đó nó có thể gọipqisbusy, tiếp theo làPQGetResultnếupqisbusyTrả về sai (0). Nó cũng có thể gọipqnotifyesĐể phát hiện thông báo thông báo (xem
Frontend sử tỷ lệ kèo bóng đá tối nayPQSendQuery/PQGetResultcũng có thể cố gắng hủy một truy tỷ lệ kèo bóng đá tối nay vẫn đang được xử lý bởi
PQRequestCancelyêu cầu rằngPostgresTừ bỏ xử lý
int pqrequestCancel (pgconn *Conn);Giá trị trả về là 1 nếu yêu cầu hủy bỏ thành côngpqerrormessageCho biết tại sao tỷ lệ kèo bóng đá tối nay.) Công văn thành côngPQRequestCancel, ứng tỷ lệ kèo bóng đá tối nay phải tiếp tục vớiPQGetResult. Nếu hủy bỏ có hiệu lực,
Lưu ý rằng nếu truy tỷ lệ kèo bóng đá tối nay hiện tại là một phần của giao dịch,
PQRequestCancelCó thể được gọi một cách an toànPQEXEC, nếuPSQLGọiPQRequestCancelTừ bộ xử lý tín hiệu Sigint, do đóPQEXEC. Lưu ý rằngPQRequestCancelsẽ tỷ lệ kèo bóng đá tối nay có tác dụng nếu