이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.토토 커뮤니티 : 문서 : 17 : 32.9. 비동기 알림버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

31.8. 비동기 범퍼카 토토

포스트그레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그리고추가필드는 별도의 할당을 나타내지 않습니다. (이러한 필드의 이름은 과거의 이름입니다. 특히 채널 이름은 관계 이름과 관련이 있을 필요가 없습니다.)

예 31-2비동기 범퍼카 토토 사용을 보여주는 샘플 프로그램을 제공합니다.

PQ범퍼카 토토실제로 서버에서 데이터를 읽지 않습니다. 이전에 다른 메시지를 흡수한 메시지를 반환할 뿐입니다libpq함수. 고대 릴리스에서libpq, 적시에를 수신할 수 있는 유일한 방법범퍼카 토토메시지는 비어 있는 명령이라도 지속적으로 명령을 제출한 다음 확인하는 것이었습니다PQ범퍼카 토토각각 이후PQexec. 이는 여전히 작동하지만 처리 능력 낭비로 인해 더 이상 사용되지 않습니다.

확인하는 더 좋은 방법범퍼카 토토실행할 유용한 명령이 없을 때의 메시지는 호출하는 것입니다PQconsumeInput그런 다음 확인하세요PQ범퍼카 토토. 당신은 사용할 수 있습니다선택()서버에서 데이터가 도착할 때까지 기다리므로 no를 사용함CPU할 일이 없다면 힘을 발휘하세요. (참조PQsocket사용할 파일 설명자 번호를 얻으려면선택().) 다음을 사용하여 명령을 제출하면 정상적으로 작동합니다.PQsendQuery/PQgetResult또는 간단히 사용PQexec. 하지만 반드시 확인해야 합니다.PQ범퍼카 토토각각 이후PQgetResult또는PQexec, 명령 처리 중에 범퍼카 토토이 수신되었는지 확인합니다.