지원되지 않는 버전 :7.0
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

사설 토토 공고

Postgres비동기식을 지원합니다 듣기 및 알림 명령을 통한 알림. 백엔드 특정 알림 조건에 대한 관심을 등록합니다 청취 명령 (그리고 무기력으로 듣기를 멈출 수 있습니다. 명령). 특정 조건에서 듣는 모든 백엔드는됩니다 해당 조건 이름의 알림이 모든 백엔드에 의해 실행됩니다. 추가 정보가 전달되지 않습니다 청취자에게 알림. 따라서 일반적으로 실제 데이터 의사 소통이 필요합니다. 데이터베이스를 통해 전송됩니다 관계. 일반적으로 조건 이름은 연관된 것과 동일합니다. 관계이지만 관련이있을 필요는 없습니다. 관계.

libpq신청서를 제출하십시오 평범하지 않은 명령은 일반 SQL 쿼리입니다. 그 후, 도착 사설 토토 메시지는 pqnotifies (). 호출하여 감지 할 수 있습니다.

  • pqnotifies다음을 반환합니다 처리되지 않은 알림 메시지 목록에서 알림 백엔드에서 받았습니다. 보류 중이없는 경우 Null을 반환합니다 알림. PQNotifies에서 알림이 반환되면 처리 된 것으로 간주되며의 목록에서 제거됩니다. 알림.

    pgnotify * pqnotifies (pgconn * conn);
    
    typedef struct pgnotify 
        char relname [이름 지정된 사람];       /* 관계 이름
                                          * 데이터 포함 */
        int be_pid;                     / * 백엔드의 프로세스 ID */
     pgnotify;
    처리 후 pgnotify 객체가 returepqnotifies|free ()메모리 누출을 피하려면

    참고 :inPostgres6.4 이상,be_pidis 백엔드에 알리는 반면, 이전 버전에서는 그랬습니다 항상 당신의 백엔드PID.

두 번째 샘플 프로그램은 사설 토토식 알림.

pqnotifies ()실제로 읽지 않습니다 백엔드 데이터; 이전에 흡수 된 메시지를 반환합니다 또 다른libpq함수. 이전 릴리스libpq, 유일한 방법 사설 토토 메시지를 적시에 수령하는지 확인하십시오. 쿼리, 심지어 빈 것도 쿼리하고 확인pqnotifies ()각각pqExec (). 이것은 여전히 ​​작동하지만 감가 상각됩니다 처리 전력 낭비로.

없을 때 통지 메시지를 확인하는 더 좋은 방법 유용한 쿼리는 전화하는 것입니다pqconsumeInput (), 그 다음 확인pqnotifies (). 사용할 수 있습니다select(2) 백엔드 데이터가 도착할 때까지 기다리려면, 따라서 NO 사용CPU할 일이 있습니다. (보다pqsocket ()와 함께 사용할 파일 디스크립터 번호를 얻으려면select.) 이것은 당신이 여부에 관계없이 잘 작동합니다 Queries 제출pqsendquery/pqgetresult또는 간단히 사용PQEXEC. 당신은 그러나 확인해야합니다pqnotifies ()각각pqgetresult또는PQEXEC쿼리 처리.