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

31.7. 비동기 알림

토토 핫제공 를 통한 비동기 알림듣기그리고알림명령. 클라이언트 세션 특정 알림 채널에 대한 관심을 등록합니다.듣기명령(중지할 수 있음) 와 함께 듣는다듣지 않음명령). 특정 채널을 청취하는 모든 세션에 알림이 전송됩니다. 비동기적으로 a알림명령 해당 채널 이름을 가진 모든 세션에서 실행됩니다. 갑"페이로드"문자열을 전달하여 통신할 수 있습니다. 청취자에게 추가 데이터를 제공합니다.

libpq신청서 제출듣기, 듣지 않음알림명령은 일반 SQL 명령과 동일합니다. 도착알림메시지는 이후에 다음을 통해 감지될 수 있습니다. 전화PQ알림.

함수PQ알림반환 처리되지 않은 알림 목록에서 다음 알림 서버로부터 받은 메시지. 다음과 같은 경우 널 포인터를 반환합니다. 보류 중인 알림이 없습니다. 일단 알림은 에서 반환됨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, 알림이 수신되었는지 확인 명령을 처리하는 동안.