젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.6 : 빠른 경로 토토 핫 | PostgreSQL : 문서 : 9.6 : LIBPQ -C 무지개 토토 | 32 장libpq-C 라이브러리 | 스포츠 토토 베트맨 PostgreSQL : 문서 : 9.6 : 사본 명령과 관련된 기능 |
PostgreSQL듣기andNotify명령. 클라이언트 세션은 특정 윈 토토 채널에 대한 관심을듣기명령 (그리고Unlisten명령). 특정 채널에서 듣는 모든 세션은 A 일 때 비동기 적으로 윈 토토을받습니다.Notify해당 채널 이름을 가진 명령은 모든 세션에서 실행됩니다. 에이"페이로드"문자열을 전달하여 추가 데이터를 청취자에게 전달할 수 있습니다.
libpq신청서 제출듣기, Unlisten및Notify일반 SQL 명령으로 명령. 의 도착Notify메시지를 호출하여 후속으로 감지 할 수 있습니다pqnotifies
.
함수pqnotifies
서버에서받은 처리되지 않은 알림 메시지 목록에서 다음 알림을 반환합니다. 보류중인 알림이없는 경우 널 포인터를 반환합니다. 알림이 반환되면pqnotifies
, 그것은 처리 된 것으로 간주되며 윈 토토 목록에서 제거됩니다.
pgnotify *pqnotifies (pgconn *conn); typedef struct pgnotify char *relname; / * 알림 채널 이름 */ int be_pid; / * 서버 프로세스 알림의 프로세스 ID */ char *엑스트라; / * 알림 페이로드 문자열 */ pgnotify;
처리 후pgnotify객체에 의해 반환pqnotifies
PQFREEMEM
. 를 해방시키기에 충분합니다pgnotify포인터; 그만큼Relnameand추가필드는 별도의 할당을 나타내지 않습니다. (이 분야의 이름은 역사적입니다. 특히 채널 이름은 관계 이름과 관련이 없습니다.)
예 32-2비동기 윈 토토 사용을 보여주는 샘플 프로그램을 제공합니다.
pqnotifies
실제로 서버에서 데이터를 읽지 않습니다. 이전에 다른 사람이 흡수 한 메시지를 반환합니다libpq함수. 고대 릴리스에서libpq, 적시에 수령하는 유일한 방법Notify메시지는 끊임없이 명령, 심지어 비어있는 명령을 제출 한 다음 확인하는 것입니다pqnotifies
각각PQEXEC
. 이것은 여전히 작동하지만 처리 능력 낭비로 더 이상 사용되지 않습니다.
확인하는 더 좋은 방법Notify유용한 명령이없는 경우 전화하는 것입니다pqconsumeInput
, 그 다음 확인pqnotifies
. 사용할 수 있습니다select ()
데이터가 서버에서 도착하기를 기다리려면 NOCPU할 일이 없다면 힘. (보다pqsocket
와 함께 사용할 파일 디스크립터 번호를 얻으려면select ()
.) 이것은 명령을 제출하든이 작동합니다.pqsendquery
/pqgetresult
또는 간단히 사용PQEXEC
. 그러나 확인해야합니다pqnotifies
각각pqgetresult
또는PQEXEC
, 명령 처리 중에 윈 토토이 들어 있는지 확인하려면