사설 토토 사이트지원 를 통한 비동기 알림듣기그리고알림명령. 백엔드 레지스터 특정 통지 조건에 대한 관심은듣기명령(듣기를 중지할 수 있음) 와 함께듣지 않음명령). 모든 백엔드 특정 조건을 청취하면 알림이 전송됩니다. 비동기적으로 a알림그 중 조건 이름은 모든 백엔드에서 실행됩니다. 추가 없음 정보는 알림자에서 리스너로 전달됩니다. 따라서, 일반적으로 전달해야 하는 실제 데이터는 데이터베이스 관계를 통해 전송됩니다. 일반적으로 상태 이름은 연관된 관계와 동일하지만 그렇지 않습니다. 연관된 관계가 존재하는 데 필요합니다.
libpq신청서 제출듣기그리고듣지 않음일반 SQL 명령과 같은 명령입니다. 그 후, 도착알림메시지는 다음을 통해 감지될 수 있습니다.
전화PQ알림.
PQ알림다음을 반환합니다.
처리되지 않은 알림 메시지 목록에서 알림
백엔드에서 받았습니다. 없는 경우 NULL을 반환합니다.
대기 중인 알림. 에서 알림이 반환되면PQ알림으로 간주됩니다.
처리되어 목록에서 삭제됩니다.
알림.
PGnotify* PQnotify(PGconn *conn);
typedef 구조체 pgNotify
char *relname; /* 데이터를 포함하는 관계의 이름 */
int be_pid; /* 백엔드의 프로세스 ID */
PGnotify;
a 처리 후PGnotify객체가 반환됨PQ알림,
반드시 해제하세요.무료()메모리 누수를 방지하기 위해.
참고:에사설 토토 사이트6.4 이상,be_pid알리는 것입니다 백엔드인 반면, 이전 버전에서는 항상PID당신 자신의 것 백엔드.
두 번째 샘플 프로그램은 다음의 사용 예를 제공합니다. 비동기 알림.
PQnotify()실제로는 그렇지 않습니다
백엔드 데이터를 읽습니다. 이전에 흡수된 메시지만 반환합니다.
다른 사람에 의해libpq함수. 에서
이전 릴리스libpq,
NOTIFY 메시지를 적시에 수신할 수 있는 유일한 방법은 다음과 같습니다.
비어 있는 쿼리라도 지속적으로 쿼리를 제출한 다음 확인하세요.PQnotify()각각 이후PQexec(). 이것이 여전히 작동하는 동안,
처리 능력의 낭비로 인해 더 이상 사용되지 않습니다.
NOTIFY 메시지가 없을 때 NOTIFY 메시지를 확인하는 더 좋은 방법
유용한 쿼리는 전화하는 것입니다.PQconsumeInput()그런 다음 확인하세요PQnotify(). 당신은 사용할 수 있습니다선택()백엔드 데이터가 도착할 때까지 기다리려면,
따라서 no를 사용함CPU힘
할 일이 없으면. (참조PQsocket()파일 설명자 번호를 얻으려면
와 함께 사용하다선택().) 참고하세요
다음을 사용하여 쿼리를 제출하면 정상적으로 작동합니다.PQsendQuery/PQgetResult또는 간단히 사용PQexec. 하지만 반드시 확인해야 합니다.PQnotify()각각 이후PQgetResult또는PQexec, 알림이 수신되었는지 확인
쿼리를 처리하는 동안.