이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

사설 토토 알림

포스트그레스비동기 지원 LISTEN 및 NOTIFY 명령을 통해 알림. 백엔드 특정 통지 조건에 대한 관심을 등록합니다. LISTEN 명령(UNLISTEN으로 듣기를 중지할 수 있음) 명령). 특정 조건을 수신하는 모든 백엔드는 해당 조건 이름의 NOTIFY가 다음과 같을 때 비동기적으로 알림을 받습니다. 모든 백엔드에서 실행됩니다. 추가 정보는 다음에서 전달되지 않습니다. 청취자에게 알리는 사람입니다. 따라서 일반적으로 실제 데이터는 의사소통이 필요한 사항은 데이터베이스를 통해 전송됩니다. 관계. 일반적으로 조건 이름은 연관된 이름과 동일합니다. 관계가 있지만 관련이 반드시 있어야 하는 것은 아닙니다. 관계.

libpq신청서 제출 LISTEN 및 일반 SQL 쿼리와 같은 UNLISTEN 명령입니다. 그 후, 도착 NOTIFY 메시지는 PQnotify()를 호출하여 감지할 수 있습니다.

  • PQ사설 토토다음을 반환합니다 처리되지 않은 알림 메시지 목록에서 알림 백엔드에서 받았습니다. 보류 중인 항목이 없으면 NULL을 반환합니다. 알림. PQnotify에서 알림이 반환되면, 처리된 것으로 간주되어 목록에서 제거됩니다. 알림.

    PGnotify* PQnotify(PGconn *conn);
    
    typedef 구조체 pgNotify 
        char relname[NAMEDATALEN];       /* 관계 이름
                                          * 데이터 포함 */
        int be_pid;                     /* 백엔드의 프로세스 ID */
     PGnotify;
    다음에서 반환된 PGnotify 개체를 처리한 후PQ사설 토토, 반드시 다음을 사용하여 해제하세요.무료()메모리 누수를 방지하기 위해.

    참고:포스트그레6.4 이상,be_pid이것은 백엔드에 알리는 반면, 이전 버전에서는 항상 자신의 백엔드PID.

두 번째 샘플 프로그램은 다음의 사용 예를 보여줍니다. 비동기 알림.

PQnotify()실제로 읽지 않습니다 백엔드 데이터; 이전에 흡수된 메시지를 반환할 뿐입니다. 또 다른libpq함수. 이전에는 릴리스libpq, 유일한 방법은 NOTIFY 메시지를 적시에 수신하도록 지속적으로 제출해야 했습니다. 비어 있는 쿼리라도 확인한 다음 확인하세요.PQnotify()각각 이후PQexec(). 이 기능은 여전히 작동하지만 더 이상 사용되지 않습니다. 처리 능력의 낭비입니다.

NOTIFY 메시지가 없을 때 NOTIFY 메시지를 확인하는 더 좋은 방법 유용한 쿼리는 전화하는 것입니다.PQconsumeInput(), 그럼 확인하세요PQnotify(). 당신은 사용할 수 있습니다선택(2) 백엔드 데이터가 도착할 때까지 기다리며, 따라서 no를 사용함CPU힘이 없으면 할 일이 있습니다. (참조PQsocket()함께 사용할 파일 설명자 번호를 얻으려면선택.) 이는 다음과 같은 경우에도 제대로 작동합니다. 다음으로 쿼리 제출PQsendQuery/PQgetResult또는 간단히 사용PQexec. 당신은해야합니다 하지만 꼭 확인하세요.PQnotify()각각 이후PQgetResult또는PQexec, 동안 사설 토토이 수신되었는지 확인합니다. 쿼리 처리 중입니다.