32.7. 진행중인 쿼리 스포츠 토토 베트맨#

32.7.1. 스포츠 토토 베트맨 요청을 보내는 기능#

pqcancelcreate #

스포츠 토토 베트맨 요청을 보낼 수있는 연결을 준비합니다.

pgcancelconn *pqcancelcreate (pgconn *conn);

pqcancelcreatea 생성pgcancelconn객체이지만이 연결에 대한 스포츠 토토 베트맨 요청을 즉시 보내지는 않습니다. 스포츠 토토 베트맨 요청은이 연결을 통해를 사용하여 차단 방식으로 보낼 수 있습니다.pqcancelblocking그리고 사용하지 않는 방식으로pqcancelstart. 반환 값을 전달할 수 있습니다pqcancelstatus확인pgcancelconn객체가 성공적으로 생성되었습니다. 그만큼pgcancelconn개체는 응용 프로그램에서 직접 액세스 할 수없는 불투명 구조입니다. 이것pgcancelconn객체를 사용하여 원래 연결에서 실행중인 쿼리를 스레드 안전 방식으로 스포츠 토토 베트맨 할 수 있습니다.

스포츠 토토 베트맨 요청에 대한 연결을 설정할 때 원래 클라이언트의 많은 연결 매개 변수가 재사용됩니다. 중요한 것은 원래 연결에 연결의 암호화 및/또는 대상 호스트의 검증이 필요한 경우 (사용sslmode또는gssencmode), 그런 다음 취소 요청에 대한 연결은 동일한 요구 사항으로 이루어집니다. 취소 요청은 인증이 필요하지 않고 취소 요청이 제출 된 직후에 연결이 닫히기 때문에 인증 중 또는 인증 후에 만 ​​사용되는 모든 연결 옵션은 무시됩니다..

pqcancelcreate널이 아닌 포인터를 반환하면 전화해야합니다pqcancelfinish완료되면 구조와 관련 메모리 블록을 처리하기 위해. 스포츠 토토 베트맨 요청이 실패했거나 포기 된 경우에도 수행해야합니다.

pqcancelblocking #

서버가 현재 명령 처리를 차단 방식으로 포기하도록 요청합니다.

int pqcancelblocking (pgcancelconn *cancelConn);

요청은 주어진 것을 통해 이루어집니다pgcancelconnpqcancelcreate. 의 반환 값pqcancelblocking스포츠 토토 베트맨 요청이 성공적으로 발송 된 경우 1이고 그렇지 않은 경우 0입니다. 실패한 경우를 사용하여 오류 메시지를 검색 할 수 있습니다.pqcancelerRormessage .

스포츠 토토 베트맨의 성공적인 파견은 요청에 어떤 영향을 미칠 것이라고 보장하지 않습니다. 스포츠 토토 베트맨가 효과적이면 스포츠 토토 베트맨 된 명령이 조기에 종료되고 오류 결과를 반환합니다. 스포츠 토토 베트맨가 실패하면 (예 : 서버가 이미 명령 처리를 수행했기 때문에) 눈에 띄는 결과는 전혀 없습니다.

pqcancelstart
pqcancelpoll #

서버가 비 블로킹 방식으로 현재 명령 처리를 포기하도록 요청합니다.

int pqcancelstart (pgcancelconn *cancelConn);

postgrespollingstatustype pqcancelpoll (pgcancelconn *cancelConn);

요청은 주어진 것을 통해 이루어집니다pgcancelconnpqcancelcreate. 의 반환 값pqcancelstart스포츠 토토 베트맨 요청이 시작될 수있는 경우 1이고 그렇지 않은 경우 0입니다. 실패한 경우를 사용하여 오류 메시지를 검색 할 수 있습니다.pqcancelerRormessage .

ifpqcancelstart성공, 다음 단계는 투표하는 것입니다libpq스포츠 토토 베트맨 연결 시퀀스를 진행할 수 있도록. 사용pqcancelsocket데이터베이스 연결 기본 소켓의 디스크립터를 얻으려면. (주의 : 소켓이 동일하게 남아 있다고 가정하지 마십시오pqcancelpoll전화.) 루프 : ifpqcancelpoll (cancelConn)마지막 반품pgres_polling_reading, 소켓이 읽을 준비가 될 때까지 기다리십시오 (select (), poll ()또는 유사한 시스템 기능). 그런 다음 호출pqcancelpoll (cancelConn)다시. 반대로, ifpqcancelpoll (cancelConn)마지막 반품pgres_polling_writing, 소켓이 쓸 준비가 될 때까지 기다렸다가 전화pqcancelpoll (cancelConn)다시. 첫 번째 반복에서, 즉 아직 전화하지 않은 경우pqcancelpoll (cancelConn), 마지막으로 반환 된 것처럼 행동pgres_polling_writing. 이 루프를 계속할 때까지pqcancelpoll (cancelConn)반환pgres_polling_failed, 연결 절차가 실패했거나pgres_polling_ok, 스포츠 토토 베트맨 요청이 성공적으로 발송되었음을 나타냅니다.

스포츠 토토 베트맨의 성공적인 파견은 요청에 어떤 영향을 미칠 것이라고 보장하지 않습니다. 스포츠 토토 베트맨가 효과적이면 스포츠 토토 베트맨 된 명령이 조기에 종료되고 오류 결과를 반환합니다. 스포츠 토토 베트맨가 실패하면 (예 : 서버가 이미 명령 처리를 수행했기 때문에) 눈에 띄는 결과는 전혀 없습니다.

연결하는 동안 언제든지 연결 상태를 호출하여 확인할 수 있습니다pqcancelstatus. 이 호출이 반환되는 경우Connection_Bad, 그런 다음 취소 절차가 실패했습니다. 통화가 반환되는 경우Connection_ok, 취소 요청이 성공적으로 발송되었습니다. 이 두 상태는의 반환 값에서 똑같이 감지 할 수 있습니다.pqcancelpoll, 위에서 설명합니다. 다른 상태는 또한 비동기 연결 절차 중에 발생할 수 있습니다. 이는 연결 절차의 현재 단계를 나타내며 예를 들어 사용자에게 피드백을 제공하는 데 유용 할 수 있습니다. 이 상태는 다음과 같습니다.

connection_allocated #

전화를 기다리는 중pqcancelstart또는pqcancelblocking, 실제로 소켓을 엽니 다. 이것은 호출 직후 연결 상태입니다pqcancelcreate또는pqcancelreset. 이 시점에서 서버에 대한 연결은 아직 시작되지 않았습니다. 실제로 스포츠 토토 베트맨 요청 사용을 시작하려면pqcancelstart또는pqcancelblocking.

Connection_started #

연결이 이루어지기를 기다리고 있습니다.

Connection_Made #

연결 확인; 보내기를 기다리고 있습니다.

Connection_awaiting_Response #

서버에서 응답을 기다리고 있습니다.

Connection_SSL_STARTUP #

SSL 암호화 협상.

Connection_GSS_STARTUP #

GSS 암호화 협상.

이러한 상수는 (호환성을 유지하기 위해)이 상수가 유지되지만 응용 프로그램은 특정 순서 또는 전혀, 또는 상태가 항상 문서화 된 값 중 하나 인 상태에 의존해서는 안됩니다. 응용 프로그램은 다음과 같은 일을 할 수 있습니다.

스위치 (pqcancelstatus (conn))

        Case Connection_Started :
            피드백 = "연결 ...";
            부서지다;

        Case Connection_Made :
            피드백 = "서버에 연결되어 ...";
            부서지다;
.
.
.
        기본:
            피드백 = "연결 ...";

theConnect_Timeout사용 할 때 연결 매개 변수가 무시됩니다pqcancelpoll; 과도한 시간이 경과했는지 여부를 결정하는 것은 응용 프로그램의 책임입니다. 그렇지 않으면,pqcancelstart뒤 이후pqcancelpoll루프는에 해당합니다.pqcancelblocking.

pqcancelstatus #

취소 상태를 반환합니다.

Connstatustype pqcancelstatus (const pgcancelconn *cancelConn);

상태는 여러 값 중 하나 일 수 있습니다. 그러나이 중 3 개만이 비동기식 스포츠 토토 베트맨 절차 외부에서 볼 수 있습니다.Connection_Allocated, Connection_okConnection_Bad. a의 초기 상태pgcancelconn사용을 성공적으로 만들었습니다pqcancelcreateisConnection_Allocated. 성공적으로 발송 된 스포츠 토토 베트맨 요청은 상태가 있습니다Connection_ok. 실패한 스포츠 토토 베트맨 시도는 상태에 따라 신호를받습니다Connection_Bad. OK 상태는 그대로 유지됩니다pqcancelfinish또는pqcancelreset호출.

입력 참조pqcancelstart반환 될 수있는 다른 상태 코드와 관련하여.

스포츠 토토 베트맨의 성공적인 파견은 요청에 어떤 영향을 미칠 것이라고 보장하지 않습니다. 스포츠 토토 베트맨가 효과적이면 스포츠 토토 베트맨 된 명령이 조기에 종료되고 오류 결과를 반환합니다. 스포츠 토토 베트맨가 실패하면 (예 : 서버가 이미 명령 처리를 수행했기 때문에) 눈에 띄는 결과는 전혀 없습니다.

pqcancelsocket #

서버에 대한 스포츠 토토 베트맨 연결 소켓의 파일 디스크립터 번호를 얻습니다.

int pqcancelsocket (const pgcancelconn *cancelConn);

유효한 디스크립터는 0보다 크거나 동일합니다. -1의 결과는 현재 서버 연결이 열리지 않음을 나타냅니다. 이것은이 섹션의 기능을 호출 한 결과로 변경 될 수 있습니다.pgcancelconn(제외pqcancelerRormessagepqcancelsocket자체).

pqcancelerRormessage #

취소에서 작업에서 가장 최근에 생성 된 오류 메시지를 반환합니다.

char *pqcancelerrormessage (const pgcancelconn *cancelConn);

거의 모든libpqa 기능pgcancelconn메시지를 설정합니다PQCANCELERRORMESSAGE실패하면.libpq컨벤션, 비어 없음pqcancelerRormessage결과는 여러 줄로 구성 될 수 있으며 후행 Newline이 포함됩니다. 발신자는 결과를 직접 자유롭게 해제해서는 안됩니다. 관련이 해방 될 것입니다pgcancelconn핸들이 전달되었습니다pqcancelfinish. 결과 문자열은의 작업에서 동일하게 유지 될 것으로 예상되지 않아야합니다.pgcancelconn구조.

pqcancelfinish #

스포츠 토토 베트맨 연결을 닫습니다 (아직 스포츠 토토 베트맨 요청을 보내지 않은 경우). 또한에 사용 된 메모리를 해방합니다.pgcancelconn개체.

void pqcancelfinish (pgcancelconn *cancelConn);

스포츠 토토 베트맨 시도가 실패하더라도 (pqcancelstatus), 응용 프로그램은 전화해야합니다pqcancelfinishpgcancelconn개체. 그만큼pgcancelconn포인터는 다시 사용해서는 안됩니다pqcancelfinish호출.

pqcancelreset #

재설정PGCANCELCONN따라서 새로운 스포츠 토토 베트맨 연결을 위해 재사용 할 수 있습니다.

void pqcancelreset (pgcancelconn *cancelConn);

PGCANCELCONN현재 취소 요청을 보내는 데 사용되면이 연결이 닫힙니다. 그런 다음 준비합니다.PGCANCELCONN새로운 스포츠 토토 베트맨 요청을 보내는 데 사용될 수 있도록 개체

이것은 하나를 생성하는 데 사용될 수 있습니다PGCANCELCONNaPGCONN원래의 수명 내내 여러 번 재사용pgconn.

32.7.2. 스포츠 토토 베트맨 요청을 보내기위한 쓸모없는 기능#

이 기능은 스포츠 토토 베트맨 요청을 보내는 오래된 방법을 나타냅니다. 여전히 작동하지만 원래 연결이 지정된 경우에도 암호화 된 방식으로 스포츠 토토 베트맨 요청을 보내지 않아서는 더 이상 사용되지 않습니다sslmode또는gssencmode암호화가 필요합니다. 따라서 이러한 오래된 방법은 새 코드에서 사용되는 데 크게 낙담하며 기존 코드를 변경하여 새로운 기능을 대신 사용하는 것이 좋습니다.

pqgetCancel #

사용을 사용하여 명령을 스포츠 토토 베트맨하는 데 필요한 정보가 포함 된 데이터 구조를 만듭니다pqcancel.

pgcancel *pqgetcancel (pgconn *conn);

pqgetCancela 생성pgcancel주어진 객체pgconn연결 객체. 돌아올 것입니다NULL주어진 경우connisNULL또는 잘못된 연결. 그만큼pgcancel객체는 응용 프로그램에서 직접 액세스 할 수없는 불투명 구조입니다. 전달 될 수 있습니다pqcancel또는PQFREECANCEL.

PQFREECANCEL #

pqgetCancel.

void pqfreecancel (pgcancel *취소);

PQFREECANCEL이전에 생성 된 데이터 객체를 해제pqgetCancel.

pqcancel #

pqcancel|pqcancelblocking그러나 신호 핸들러 내에서 안전하게 사용할 수있는 것.

int pqcancel (pgcancel *취소, char *errbuf, int errbufsize);

pqcancel거꾸로 호환성 이유 때문에 존재합니다.pqcancelblocking대신 사용해야합니다. 유일한 혜택pqcancel|errbuf는 신호 핸들러의 로컬 변수입니다. 그러나 이것은 일반적 으로이 기능이 가지고있는 보안 문제의 가치가있는 충분한 이점으로 간주되지 않습니다.

thepgcancel개체는까지 읽기 전용입니다.pqcancel관련이 있으므로 조작하는 것과 분리 된 스레드에서도 호출 할 수 있습니다pgconn개체.

반환 값pqcancel스포츠 토토 베트맨 요청이 성공적으로 발송 된 경우 1이고 그렇지 않은 경우 0입니다. 그렇지 않다면errbuf설명 오류 메시지로 채워져 있습니다.errbuf크기의 숯불 배열이어야합니다errbufsize(권장 크기는 256 바이트).

PQREQUESTCANCEL #

PQREQUESTCANCEL|pqcancelblocking.

int pqRequestCancel (pgconn *conn);

PQREQUESTCANCEL거꾸로 호환성 이유 때문에 존재합니다.pqcancelblocking대신 사용해야합니다. 사용에 이점이 없습니다PQREQUESTCANCELOverpqcancelblocking.

서버가 현재 명령의 처리를 포기하도록 요청합니다. 직접 작동합니다.pgconn객체 및 고장의 경우 오류 메시지가에 저장됩니다.pgconn개체 (PQERRORMESSAGE). 기능은 동일하지만이 접근법은 다중 스레드 프로그램이나 신호 처리기 내에서 안전하지 않습니다.pgconn의 오류 메시지는 현재 연결 중에 진행중인 작업이 엉망이됩니다.

정정 제출

38396_38622이 양식문서 문제를보고하려면