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

비동기 공고

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

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

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

    pgnotify * pqnotifies (pgconn * conn);
    
    typedef struct pgnotify
    
            char relname [이름 지정된 사람];       /* 관계 이름
                                                     * 데이터 포함 */
            int be_pid;                     / * 백엔드의 프로세스 ID */
         pgnotify;
    처리 후 pqnotifies에 의해 반환 된 pgnotify 객체를 처리 한 후 메모리 누출을 피하기 위해 Free ()로 자유롭게 해방하십시오. 참고 : inPostgres6.4 이상, Be_pid 백엔드 알림 인 반면, 이전 버전에서는 항상 당신의 백엔드의 pid.

두 번째 샘플 프로그램은 비동기식 토토 사이트.

pqnotifies ()는 실제로 백엔드 데이터를 읽지 않습니다. 그냥 이전에 다른 사람이 흡수 한 메시지를 반환합니다libpq함수. 이전 릴리스에서libpq, 적시에 수령하는 유일한 방법 메시지는 메시지, 심지어 쿼리, 심지어 쿼리를 지속적으로 제출하는 것입니다. 그런 다음 각 pqexec () 후 pqnotifies ()를 확인하십시오. 아직도 작동하면 처리 능력 낭비로 더 이상 사용되지 않습니다. 더 나은 유용한 쿼리가 없을 때 메시지 알림을 확인하는 방법 Make는 pqconsumeInput ()을 호출 한 다음 pqnotifies ()를 확인하는 것입니다. 당신은 할 수 있습니다 Select (2)를 사용하여 백엔드 데이터가 도착할 때까지 기다려서 NO를 사용하십시오. 할 일이 없다면 CPU 전원. 이것이 효과가 있습니다 OK PQSENDQUERY/PQGETRESULT를 사용하든 평범한 오래된 PQEXEC를 사용하든 쿼리. 그러나 PQNotifies () 후에 확인해야합니다 알림이 들어 있는지 확인하기 위해 각 pqgetresult 또는 pqexec 쿼리 처리 중에.