| 젠 토토 : 문서 : 9.6 : 젠 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.6 : 빠른 경로 토토 핫 | PostgreSQL : 문서 : 9.6 : LIBPQ -C 무지개 토토 | 32장.libpq- C 라이브러리 | 스포츠 토토 베트맨 PostgreSQL : 문서 : 9.6 : 사본 명령과 관련된 기능 |
포스트그레SQL다음을 통해 비동기 윈 토토을 제공합니다.듣기그리고윈 토토명령. 클라이언트 세션은 특정 윈 토토 채널에 대한 관심을 다음과 같이 등록합니다.듣기명령(다음 명령으로 듣기를 중지할 수 있습니다.듣지 않음명령). 특정 채널을 청취하는 모든 세션은 다음과 같은 경우 비동기식으로 윈 토토을 받습니다.윈 토토11286_11350"페이로드"문자열을 전달하여 청취자에게 추가 데이터를 전달할 수 있습니다.
libpq신청서 제출듣기, 듣지 않음및윈 토토명령은 일반 SQL 명령과 동일합니다. 도착윈 토토메시지는 나중에 호출하여 감지할 수 있습니다.PQ윈 토토.
함수PQ윈 토토서버에서 수신한 처리되지 않은 윈 토토 메시지 목록에서 다음 윈 토토을 반환합니다. 보류 중인 윈 토토이 없으면 null 포인터를 반환합니다. 에서 윈 토토이 반환되면PQ윈 토토, 처리된 것으로 간주되어 윈 토토 목록에서 제거됩니다.
PGnotify *PQnotify(PGconn *conn);
typedef 구조체 pgNotify
char *relname; /* 윈 토토 채널 이름 */
int be_pid; /* 통지하는 서버 프로세스의 프로세스 ID */
문자 *추가; /* 윈 토토 페이로드 문자열 */
PGnotify;
a 처리 후PGnotify객체가 반환됨PQ윈 토토, 반드시 다음을 사용하여 해제하세요.PQfreemem. 다음을 해제하는 것으로 충분합니다.PGnotify포인터;relname그리고추가필드는 별도의 할당을 나타내지 않습니다. (이러한 필드의 이름은 과거의 이름입니다. 특히 채널 이름은 관계 이름과 관련이 있을 필요가 없습니다.)
예 32-2비동기 윈 토토 사용을 보여주는 샘플 프로그램을 제공합니다.
PQ윈 토토실제로 서버에서 데이터를 읽지 않습니다. 이전에 다른 메시지를 흡수한 메시지를 반환할 뿐입니다libpq함수. 고대 릴리스에서libpq, 적시에를 수신할 수 있는 유일한 방법윈 토토메시지는 비어 있는 명령이라도 지속적으로 명령을 제출한 다음 확인하는 것이었습니다PQ윈 토토각각 이후PQexec. 이는 여전히 작동하지만 처리 능력 낭비로 인해 더 이상 사용되지 않습니다.
확인하는 더 좋은 방법윈 토토실행할 유용한 명령이 없을 때의 메시지는 호출하는 것입니다PQconsumeInput그런 다음 확인하세요PQ윈 토토. 당신은 사용할 수 있습니다선택()서버에서 데이터가 도착할 때까지 기다리므로 no를 사용함CPU할 일이 없다면 힘을 발휘하세요. (참조PQsocket사용할 파일 설명자 번호를 얻으려면선택().) 다음을 사용하여 명령을 제출하면 정상적으로 작동합니다.PQsendQuery/PQgetResult또는 간단히 사용PQexec. 하지만 반드시 확인해야 합니다.PQ윈 토토각각 이후PQgetResult또는PQexec, 명령 처리 중에 윈 토토이 수신되었는지 확인합니다.