이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다토토 커뮤니티 : 문서 : 17 : 32.9. 비동기 알림버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

32.9. 비동기 롤 토토#

PostgreSQL듣기Notify명령. 클라이언트 세션은 특정 롤 토토 채널에 대한 관심을듣기명령 (그리고Unlisten명령). 특정 채널에서 듣는 모든 세션은 A 일 때 비동기 적으로 롤 토토을받습니다.Notify해당 채널 이름을 가진 명령은 모든 세션에서 실행됩니다. 에이Payload문자열을 전달하여 추가 데이터를 청취자에게 전달할 수 있습니다.

libpq신청서 제출듣기, UnlistenNotify일반 SQL 명령으로 명령. 의 도착Notify전화로 메시지를 감지 할 수 있습니다pqnotifies.

함수pqnotifies서버에서받은 처리되지 않은 알림 메시지 목록에서 다음 알림을 반환합니다. 보류중인 알림이없는 경우 널 포인터를 반환합니다.pqnotifies, 처리 된 것으로 간주되며 롤 토토 목록에서 제거됩니다.

pgnotify *pqnotifies (pgconn *conn);

처리 후pgnotify개체에 의해 반환pqnotifiesPQFREEMEM. 를 해방시키기에 충분합니다pgnotify포인터; 그만큼Relname추가필드는 별도의 할당을 나타내지 않습니다. (이 분야의 이름은 역사적입니다. 특히 채널 이름은 관계 이름과 관련이 없습니다.)

예 32.2비동기 롤 토토 사용을 보여주는 샘플 프로그램을 제공합니다.

pqnotifies실제로 서버에서 데이터를 읽지 않습니다. 이전에 다른 사람이 흡수 한 메시지를 반환합니다libpq함수. 고대 릴리스에서libpq, 적시에 수령하는 유일한 방법Notify메시지는 끊임없이 명령, 심지어 빈 명령을 제출 한 다음 확인하는 것이 었습니다pqnotifies각각PQEXEC. 이것은 여전히 ​​작동하지만 처리 능력 낭비로 더 이상 사용되지 않습니다.

확인하는 더 좋은 방법Notify유용한 명령이없는 경우 메시지를 호출하는 것입니다pqconsumeInput, checkpqnotifies. 사용할 수 있습니다select ()서버에서 데이터가 도착하기를 기다리려면 NOCPU할 일이 없다면 힘. (보다pqsocket와 함께 사용할 파일 설명자 번호를 얻으려면select ().) 이것은 명령을 제출하든이 작동합니다.pqsendquery/pqgetresult또는 간단히 사용PQEXEC. 그러나 확인해야합니다pqnotifies각각pqgetresult또는PQEXEC, 명령 처리 중에 롤 토토이 들어 있는지 확인하려면