이 문서는 지원되지 않는 버전의 토토 꽁 머니을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다토토 커뮤니티 : 문서 : 17 : 32.9. 비동기 알림버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

31.8. 비동기 알림

토토 꽁 머니비동기식을 제공합니다 를 통한 알림듣기andNotify명령. 클라이언트 세션이 등록합니다 와의 특정 알림 채널에 대한 관심듣기명령 (그리고Unlisten명령). 모든 세션 듣기 특정 채널에서 a 일 때 비동기 적으로 알림을받습니다.Notify해당 채널 이름이있는 명령 모든 세션에서 실행. 에이"페이로드"String을 전달하여 추가 데이터를 전달할 수 있습니다. 청취자.

libpq신청서 제출듣기, Unlisten, 그리고Notify일반 SQL로 명령 명령. 의 도착알림메시지 이후에 전화하여 감지 할 수 있습니다pqnotifies.

함수pqnotifies반환 처리되지 않은 알림 목록에서 다음 알림 서버에서받은 메시지. IF가 널 포인터를 반환합니다 보류중인 알림이 없습니다. 알림이 반환되면 에서pqnotifies, 그것은 고려됩니다 알림 목록에서 처리되고 제거됩니다.

pgnotify *pqnotifies (pgconn *conn);

typedef struct pgnotify

    char *relname;              / * 알림 채널 이름 */
    int be_pid;                / * 서버 프로세스 알림의 프로세스 ID */
    char *엑스트라;                / * 알림 페이로드 문자열 */
 pgnotify;

처리 후pgnotify개체 반품pqnotifies로 무료PQFREEMEM. 그것은 자유를 해방시키기에 충분합니다pgnotify포인터; 그만큼Relnameand추가필드는 별도를 나타내지 않습니다 할당. (이 분야의 이름은 역사적입니다 특히, 채널 이름은 아무 관련이 없을 필요가 없습니다. 관계 이름.)

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

pqnotifies실제로 읽지 않습니다 서버의 데이터; 이전에 흡수 된 메시지를 반환합니다 다른 사람으로libpq함수. ~ 안에 의 사전 릴리스libpq, 유일한 것 적시에 수령하는 방법Notify메시지는 끊임없이 명령, 심지어는 명령을 제출하는 것이 었습니다. 그런 다음 확인pqnotifies각각PQEXEC. 이것이 여전히 작동하는 동안, 그것은입니다 처리 전력 낭비로 더 이상 사용되지 않습니다.

확인하는 더 좋은 방법Notify유용한 명령이없는 경우 전화하는 것입니다pqconsumeInput, checkpqnotifies. 사용할 수 있습니다select ()데이터가 도착할 때까지 기다립니다 서버, 따라서 NO 사용CPU할 일이 없다면 힘. (보다pqsocket파일 디스크립터 번호를 얻으려면 사용select ().)이 점에 유의하십시오 당신이 명령을 제출하든pqsendquery/pqgetresult또는 간단히 사용PQEXEC. 그러나 확인해야합니다pqnotifies각각pqgetresult또는PQEXEC, 알림이 들어 있는지 확인하십시오 명령 처리 중에.