다음 기능은 a에 연결하는 것을 다룹니다.postgresql백엔드 서버. an
애플리케이션 프로그램은 여러 백엔드 스포츠 토토 베트맨을 열 수 있습니다
일회. (그렇게해야 할 이유 중 하나는 둘 이상의 액세스입니다.
데이터베이스.) 각 스포츠 토토 베트맨은 A로 표시됩니다.pgconn객체, 함수에서 얻은 객체PQCONNECTDB
또는pqsetdblogin
. 이러한 기능은 그럴 것입니다
아마도없는 객체 포인터를 항상 반환하십시오.
할당하기에도 기억이 너무 적습니다pgconn개체. 그만큼PQSTATUS
함수를 선택하여 확인해야합니다
쿼리 전에 스포츠 토토 베트맨이 성공적으로 이루어 졌는지 여부
스포츠 토토 베트맨 객체를 통해 전송됩니다.
경고 |
UNIX에서 열린 LIBPQ 스포츠 토토 베트맨로 프로세스를 포킹합니다
부모와 예측할 수없는 결과로 이어질 수 있습니다
아동 프로세스는 동일한 소켓과 작동을 공유합니다
시스템 리소스. 이러한 이유로, 그러한 사용법은 그렇지 않습니다
추천합니다. |
참고 :창에는 개선 방법이 있습니다 성능 단일 데이터베이스 연결이 반복적으로있는 경우 시작 및 종료. 내부적으로 libpq는 wsastartup ()을 호출합니다. 연결 시작 및 종료를위한 wsacleanup (), 각기. WSASTARTUP ()는 내부 창을 증가시킵니다 WSACLEANUP ()에 의해 감소되는 라이브러리 참조 수. 참조 수가 단지 하나 일 때, wsacleanup () 모든 리소스를 해방시키고 모든 DLL이 언로드됩니다. 이것은입니다 비싼 운영. 이를 피하기 위해 응용 프로그램이 가능합니다 리소스가 해제되지 않도록 wsastartup ()을 수동으로 호출하십시오 마지막 데이터베이스 연결이 닫히면.
PQCONNECTDB
데이터베이스 서버에 새로 스포츠 토토 베트맨됩니다.
pgconn *pqconnectdb (const char *conninfo);
이 기능은 The를 사용하여 새 데이터베이스 스포츠 토토 베트맨을 엽니 다
문자열에서 가져온 매개 변수Conninfo. 같지 않은pqsetdblogin
아래에서 매개 변수 세트가 할 수 있습니다
기능 서명을 변경하지 않고 확장하십시오
이 기능 중 (또는 비 차단 아날로그)PQConnectStart
andPQConnectPoll
)는 새로 선호됩니다
응용 프로그램 프로그래밍.
전달 된 문자열은 모든 기본값을 사용하기 위해 비어있을 수 있습니다. 매개 변수 또는 하나 이상의 매개 변수를 포함 할 수 있습니다 중학교로 분리 된 설정. 각 매개 변수 설정입니다 형식으로키워드 = value. 동일한 부호 주변의 공간은 선택 사항입니다. 글을 쓰기 위해 빈 값 또는 공간이 포함 된 값으로 단일 따옴표, 예 :키워드 = 'a 값'. 값 내의 단일 따옴표 및 백 슬래시 백 슬래시로 탈출해야합니다.\ 'and\\.
현재 인식 된 매개 변수 키워드는 다음과 같습니다.
스포츠 토토 베트맨할 호스트 이름.이것이 슬래시로 시작하면 UNIX- 도메인 커뮤니케이션을 지정합니다 TCP/IP 통신; 값은 이름입니다 소켓 파일이 저장되는 디렉토리. 그만큼 기본 행동host지정되지 않은 것은 UNIX- 도메인에 스포츠 토토 베트맨하도록합니다 소켓in/tmp(또는 모든 소켓 디렉토리는에 지정되었습니다.postgresql건축). ~에 Unix-Domain 소켓이없는 기계는 기본입니다 연결하려면LocalHost.
스포츠 토토 베트맨할 호스트의 숫자 IP 주소. 이것 표준 IPv4 주소 형식에 있어야합니다 (예 :172.28.40.9. 당신의 기계라면 IPv6을 지원하면 해당 주소를 사용할 수도 있습니다. TCP/IP 통신은 항상 비어있을 때 사용됩니다 이 매개 변수에 문자열이 지정되어 있습니다.
사용hostaddr대신host응용 프로그램을 허용합니다 호스트 이름 조회를 피하기 위해 시간 제약이있는 응용 프로그램에서 중요합니다. 그러나 Kerberos에는 호스트 이름이 필요합니다. GSSAPI, 또는 SSPI 인증 및 전체 SSL 인증서 확인. 다음 규칙은입니다 중고 : if호스트지정되어 있습니다 없이hostaddr, 호스트 이름 조회가 발생합니다. 만약에hostaddr호스트, 값hostaddr서버를 제공합니다 주소. 연결 시도가 실패합니다 호스트 이름이 필요한 경우. 둘 다hostandhostaddr지정되어 있습니다.hostaddr서버를 제공합니다 주소. 의 값host인증이 필요하지 않은 한 무시됩니다 검증 목적으로 사용됩니다 호스트 이름으로. 인증이있을 가능성이 높습니다 실패하기host기계 이름hostaddr. 또한,host보다는hostaddr를 식별하는 데 사용됩니다 연결~/.pgpass(참조토토 사이트 추천 : 문서 : 8.4 :).
호스트 이름 또는 호스트 주소가 없으면libpq연결됩니다 로컬 유닉스 도메인 소켓 사용; 또는 기계에서 유닉스 도메인 소켓이 없으면 시도 할 것입니다 연결LocalHost.
데이터베이스 이름. 기본값은 사용자 이름.
PostgreSQL사용자 연결할 이름. 기본값은 운영 체제를 실행하는 사용자의 이름 애플리케이션.
서버가 암호를 요구하는 경우 사용할 비밀번호 입증.
최대 연결 대기 초과 초 (as as 소수 정수 문자열). 제로 또는 지정되지 않았습니다 무기한 기다리는 것을 의미합니다. 사용하는 것이 좋습니다 2 초 미만의 시간 초과.
서버로 보낼 명령 줄 옵션을 추가합니다 실행 시간. 예를 들어, 이것을 설정-c geqo = off세션의 값을 설정합니다 의geqo매개 변수 toOFF. 상세하게 사용 가능한 옵션에 대한 토론, 상담18 장.
무시했습니다 (이전에는 보내야 할 위치가 지정되었습니다 서버 디버그 출력).
이 옵션은 무엇을 결정합니다 우선 순위 ASSLTCP/IP 스포츠 토토 베트맨은 서버와 협상됩니다. 6 가지 모드가 있습니다 :
표 30-1.sslmode옵션
옵션 | 설명 |
---|---|
비활성화 | 비 만 시도해보십시오.SSLConnection |
허용 | 먼저 비 시도SSL스포츠 토토 베트맨; 만약 그렇다면 실패, 시도SSLConnection |
선호(기본값) | 첫 번째 시도SSL스포츠 토토 베트맨; 만약 그렇다면 실패, 비 시도SSLConnection |
요구 | 만 시도SSL스포츠 토토 베트맨. 뿌리 인 경우 CA 파일이 있으시면 인증서를 확인하십시오 같은 방식verify-ca지정되었습니다 |
verify-ca | 만 시도SSL스포츠 토토 베트맨 및 서버 인증서가 발행되었는지 확인하십시오 신뢰할 수있는CA. |
verify-full | 만 시도SSL스포츠 토토 베트맨, 확인 서버 인증서는 a 신뢰할 수있는CA그리고 서버 호스트 이름이이를 일치시킵니다 인증서. |
참조섹션 30.17이러한 옵션의 작동 방식에 대한 자세한 설명.
sslmode는 무시됩니다 유닉스 도메인 소켓 통신. 만약에PostgreSQL없이 컴파일됩니다 SSL 지원, 옵션 사용요구동안 오류가 발생합니다 옵션24635_24642and선호허용되지만libpq그렇지 않습니다 실제로 시도SSL스포츠 토토 베트맨.
이 옵션은에 찬성하여 더 이상 사용되지 않습니다.sslmode설정.
1으로 설정된 경우, anSSL서버에 대한 스포츠 토토 베트맨입니다 필수 (이것은에 해당합니다sslmode 요구 사항).libpq그런 다음 거부 할 것입니다 서버가 수락하지 않으면 연결SSL스포츠 토토 베트맨. 만약에 0으로 설정 (기본값),libpq협상 할 것입니다 서버와의 스포츠 토토 베트맨 유형 (sslmode 선호). 이 옵션은 사용할 수 있습니다 만약에PostgreSQLIS SSL 지원으로 편집.
이 매개 변수는 파일 이름을 지정합니다 클라이언트 SSL 인증서
이 매개 변수는 위치를 지정합니다 클라이언트 인증서에 사용되는 비밀 키. 할 수 있습니다 대신 사용될 파일 이름을 지정하십시오 기본값~/.postgresql/postgresql.key또는 할 수 있습니다 외부 엔진 지정 (엔진은OpenSSL로드 가능한 모듈). 그만큼 외부 엔진 사양은 a로 구성되어야합니다 콜론-분리 된 엔진 이름 및 엔진 특이 적 키 식별자.
이 매개 변수는 루트의 파일 이름을 지정합니다 SSL 인증서
이 매개 변수는 SSL의 파일 이름을 지정합니다 인증서 취소 목록 (CRL).
Kerberos 서비스 이름을 인증 할 때 사용할 수 있습니다 Kerberos 5 또는 GSSAPI와 함께. 이것은 일치해야합니다 서버 구성에 지정된 서비스 이름 Kerberos 인증이 성공하기 위해. (참조섹션 19.3.5and섹션 19.3.3.)
GSSAPI 인증에 사용할 GSS 라이브러리. 오직 Windows에서 사용됩니다. 설정GSSAPIlibpq를 사용하도록 강제 대신 인증을위한 GSSAPI 라이브러리 기본 SSPI.
추가 매개 변수에 사용할 서비스 이름. 그것 서비스 이름을 지정pg_service.conf추가 보유 연결 매개 변수. 이것은 응용 프로그램을 허용합니다 서비스 이름 만 사용하여 연결 매개 변수 만 지정하십시오 중앙에서 유지 될 수 있습니다. 보다섹션 30.15.
매개 변수가 지정되지 않은 경우 해당 환경 변수 (참조섹션 30.13)가 확인되었습니다. 만약 환경 변수도 설정되지 않으며 표시됩니다 내장 기본값이 사용됩니다.
PQSETDBLOGIN
데이터베이스 서버에 새로 스포츠 토토 베트맨됩니다.
pgconn *pqsetdblogin (const char *pghost, const char *pgport, const char *pgoptions, const char *pgtty, const char *dbname, const char *로그인, const char *pwd);
이것은의 전임자입니다.PQCONNECTDB
고정 세트가 있습니다
매개 변수. 그 기능을 제외하고는 동일한 기능이 있습니다
누락 된 매개 변수는 항상 기본값을 사용합니다.
쓰다null또는 빈 문자열
고정 된 매개 변수 중 하나
기본값.
dbname포함=사인, A로 간주됩니다.Conninfo정확히 같은 방식으로 문자열
통과 된 경우PQCONNECTDB
및 나머지 매개 변수
그런 다음 위와 같이 적용됩니다.
pqsetdb
데이터베이스 서버에 새로 스포츠 토토 베트맨됩니다.
pgconn *pqsetdb (char *pghost, char *pgport, char *pgoptions, char *pgtty, char *dbname);
이것은 호출하는 매크로입니다pqsetdblogin
로그인및PWD매개 변수. 그것은 제공됩니다
아주 오래된 프로그램과의 역 호환성.
PQConnectStart
pqconnectpoll
스포츠 토토 베트맨하십시오 비 차단 방식으로 데이터베이스 서버에.
PGCONN *PQCONNECTSTART (const char *conninfo);
PostGrespollingStatUstype PQConnectPoll (PgConn *Conn);
이 두 기능은
응용 프로그램의 스레드가되도록 데이터베이스 서버
그렇게하는 동안 원격 I/O에서 실행이 차단되지 않습니다. 그만큼
이 접근법의 요점은 I/O가 대기하는 것입니다.
오히려 애플리케이션의 기본 루프에서 완료가 발생할 수 있습니다
내부 아래에서PQCONNECTDB
,
따라서 응용 프로그램은이 작업을 관리 할 수 있습니다
다른 활동과 평행.
데이터베이스 연결은 매개 변수를 사용하여 이루어집니다
문자열에서 가져온Conninfo,
전달PQConnectStart
.
이 문자열은 위에서 설명한 것과 동일한 형식입니다.PQCONNECTDB
.
아니PQConnectStart
NORPQConnectPoll
많은 제한이 충족되는 한 :
thehostaddr및host매개 변수는 적절하게 사용됩니다
해당 이름과 반대 이름 쿼리가
만들어진. 아래 에서이 매개 변수의 문서를 참조하십시오PQCONNECTDB
위
세부.
전화하면pqtrace
,
추적하는 스트림 객체가
차단하지 않습니다.
소켓이 적절한 지 확인하십시오
전화 전 상태pqconnectpoll
34235_34270
블로킹되지 않은 스포츠 토토 베트맨 요청을 시작하려면 전화conn = pqConnectStart ( "Connection_info_string"). 만약에Connlibpq할당 할 수 없었습니다
새로운pgconn구조.
그렇지 않으면 유효한pgconn포인터가 반환되었습니다 (아직 유효한 것을 나타내지는 않지만
데이터베이스 연결). 에서 돌아온시PQConnectStart
, Call상태 = pqstatus (conn). 만약에상태equalsConnection_Bad, PQConnectStart
실패했습니다.
ifPQConnectStart
성공, 다음 단계는 투표하는 것입니다libpq연결 순서. 사용pqsocket (conn)
설명자를 얻으려면
데이터베이스 연결의 기본 소켓 고리
따라서 : ifPQCONNECTPOLL (CONN)
마지막 반품pgres_polling_reading, 소켓까지 기다리십시오
읽을 준비가되었습니다 (select ()
, poll ()
또는 유사한 시스템 기능). 그 다음에
부르다PQConnectPoll (Conn)
다시. 반대로, ifPQConnectPoll (Conn)
마지막 반품pgres_polling_writing, 기다릴 때까지 기다리십시오
소켓이 쓸 준비가되었고 전화pqconnectpoll (conn)
다시. 당신이 있다면
아직 전화 할 것PQConnectPoll
,
즉, 호출 직후PQConnectStart
, 마치 마치 마치 마치 행동합니다
반품pgres_polling_writing.
이 루프를 계속할 때까지PQConnectPoll (Conn)
반환pgres_polling_failed,
스포츠 토토 베트맨 절차가 실패했거나pgres_polling_ok, 스포츠 토토 베트맨을 나타냅니다
성공적으로 만들어졌습니다.
연결하는 동안 언제든지의 상태
연결을 호출하여 확인할 수 있습니다PQSTATUS
. 이것이주는 경우Connection_Bad, 그런 다음 연결 절차
실패했다. 주는 경우Connection_ok
, 연결은입니다
준비가 된. 이 두 상태는 모두에서 똑같이 감지 할 수 있습니다
반환 값PQConnectPoll
, 위에서 설명합니다. 다른
상태는 또한 (그리고 중에 만 발생할 수 있습니다
비동기 연결 절차. 이것들은
연결 절차의 현재 단계
예를 들어 사용자에게 피드백을 제공하는 데 유용합니다. 이것들
상태는 :
이 상수는 여전히 남아 있지만 (in 호환성을 유지하기 위해), 응용 프로그램이어야합니다 특정 순서로 발생하지 않거나 전혀, 또는 상태가 항상 이들 중 하나입니다. 문서화 된 값. 응용 프로그램은 같은 일을 할 수 있습니다 이것:
스위치 (pqstatus (conn)) Case Connection_Started : 피드백 = "연결 ..."; 부서지다; Case Connection_Made : 피드백 = "서버에 연결되어 ..."; 부서지다; . . . 기본: 피드백 = "연결 ...";
theConnect_Timeout연결
를 사용할 때 매개 변수는 무시됩니다PQConnectPoll
; 응용 프로그램입니다
과도한 양의 양을 결정해야 할 책임
시간이 경과했습니다. 그렇지 않으면,PQConnectStart
뒤 따르는pqconnectpoll
루프는와 같습니다.PQCONNECTDB
.
ifPQConnectStart
널을 반환합니다
포인터, 전화해야pqfinish
당신이 그것을 끝내면,
구조와 관련된 구조를 폐기하기 위해
메모리 블록. 스포츠 토토 베트맨하더라도 수행해야합니다
시도는 실패하거나 포기됩니다.
pqconndefaults
기본 연결 옵션을 반환합니다.
pqconninfooption *pqconndefaults (void); typedef struct char *키워드; / * 옵션 키워드 */ char *envvar; / * 폴백 환경 변수 이름 */ char *편집; / * 기본값으로 컴파일 된 폴백 */ char *val; / * 옵션의 현재 값 또는 null */ 숯 *레이블; / * 연결 대화 상자에서 필드에 대한 레이블 */ char *dispchar; /*이 필드를 표시하는 방법을 나타냅니다 연결 대화 상자에서. 값은 다음과 같습니다. ""디스플레이가 그대로 입력되었습니다 "*"비밀번호 필드 - 값 숨기기 "D"디버그 옵션 - 기본적으로 표시하지 마십시오 */ int dispsize; / * 대화 상자의 문자의 필드 크기 */ pqconninfooption;
연결 옵션 배열을 반환합니다. 이것은 사용될 수 있습니다
가능한 모든 결정PQCONNECTDB
옵션 및 현재
기본값. 반환 값은 배열을 가리 킵니다pqconninfooption구조,
널이있는 항목으로 끝납니다키워드포인터. 널 포인터는입니다
메모리를 할당 할 수없는 경우 반환되었습니다. 주목하십시오
현재 기본값 값 (val필드)는 환경 변수 및 기타에 따라 다릅니다
문맥. 발신자는 연결 옵션 데이터를 처리해야합니다
읽기 전용.
옵션 배열을 처리 한 후 전달하여 자유롭게 해방하십시오PQCONNINFOFREE
. 이 경우
완료되지 않으면, 소량의 메모리가 각각에 유출됩니다.
전화pqconndefaults
.
PQCONNINFOPARSE
제공된 연결 옵션을 반환합니다 연결 문자열.
pqconninfooption *pqconninfoparse (const char *conninfo, char ** errmsg);
연결 문자열을 구문 분석하고 결과를 반환합니다
배열로서의 옵션; 또는 문제가있는 경우 NULL을 반환합니다
연결 문자열로. 이것은 결정에 사용될 수 있습니다
그만큼PQCONNECTDB
옵션
제공된 연결 문자열. 반환 값은
배열pqconninfooption구조.키워드포인터.
명시 적으로 지정된 옵션 만 문자열은 결과 배열에 값이 설정됩니다. 아니요 기본값이 삽입됩니다.
iferrmsgnull이 아닙니다.*errmsg성공시 Null로 설정되었습니다. 다른 문제를 설명하는 malloc'd 오류 문자열에. (그것 또한 가능합니다*errmsgNULL이 반환 되더라도 NULL로 설정하십시오. 이것은 an을 나타냅니다 메모리 외 상황.)
옵션 배열을 처리 한 후 전달하여 자유롭게 해방하십시오PQCONNINFOFREE
. 이 경우
완료되지 않고, 각 호출마다 일부 메모리가 유출됩니다PQCONNINFOPARSE
. 거꾸로,
오류가 발생하면errmsgIS
null이 아닌 경우 사용 오류 문자열을 제거하십시오.PQFREEMEM
.
pqfinish
서버 연결을 닫습니다. 또한 메모리를 해방시킵니다 에 의해 사용pgconn개체.
void pqfinish (pgconn *conn);
서버 스포츠 토토 베트맨 시도가 실패하더라도
(에 표시된대로pqstatus
),
신청서는 전화해야pqfinish
pgconn개체. 그만큼pgconn포인터를 다시 사용해서는 안됩니다
후에pqfinish
라고 불리는.
pqreset
통신 채널을 서버로 재설정합니다.
void pqreset (pgconn *conn);
이 함수는 서버에 대한 연결을 닫습니다 그리고 같은 새로운 연결을 다시 설정하려고 이전에 사용한 동일한 매개 변수를 모두 사용하는 서버. 이것 작업 연결이 있으면 오류 복구에 유용 할 수 있습니다. 손실되었습니다.
PQRESETSTART
pqresetpoll
통신 채널을 서버로 재설정하십시오 비 차단 방식.
int pqresetstart (pgconn *conn);
PostGrespollingStatUstype PQRESETPOLL (PGCONN *CONN);
이 기능은 서버에 대한 연결을 닫습니다
그리고 같은 새로운 연결을 다시 설정하려고
이전에 사용한 동일한 매개 변수를 모두 사용하는 서버. 이것
작업 연결이있는 경우 오류 복구에 유용 할 수 있습니다.
잃어버린. 그들은 다릅니다pqreset
(위) a
비 차단 방식. 이러한 기능은 동일하게 고통받습니다
제한PQConnectStart
andPQConnectPoll
.
스포츠 토토 베트맨 재설정을 시작하려면 CallPQRESETSTART
. 0을 반환하면 재설정
실패했습니다. 1을 반환하면를 사용하여 재설정을 폴링합니다PQRESETPOLL
정확히
를 사용하여 연결을 생성하는 것과 마찬가지로PQCONNECTPOLL
.