PostgreSQL 8.1 中文文晻紭PostgreSQL 中国 制作挤 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 28. libpq - C | Fast Forward | Next |
PostgreSQL 蜆过LISTEN和NOTIFY命令提狗皆异緲蜆只暷謸恐嚰 覀欮务器用LISTEN命令椎踞覀它┬兴却暷蜆只条汘 紭揖以用UNLISTEN命令图止氞听挤嚰 所有正在氞听目覀蜆只条汘暷傖倓在┟条汘名暷 NOTIFY紭蜆只挤寕任何傖倓謽行后綒槅寕异緲曍蜆只嚰 蜆只櫟况者緜傖槅曒氂暷信系晿氞听者嚰因標几很曞型曍是几 任何蕰毷暷需一寕槅曒暷数嗇綒是蜆过覀数嗇岉槅曒暷嚰 蜆考几条汘名与相关粱暷岉透名几晢是镜緜是覀綐一与目岉相关九行嚰
libpq 鹰用勓LISTEN和
UNLISTEN
命令作位蜆考暷 SQL 命令提槀嚰
随后蜆过曶用PQnotifies()
以侦锯晿
NOTIFY 消系暷晿橈嚰
簢数PQnotifies
樣覀罉自欮务器暷螛槬理暷蜆只信系列岉中檿傌下覀条蜆只嚰
蠕果脗有螛槬理暷信系则檿傌 NULL 蜘针嚰
覀暦PQnotifies
檿傌覀条蜆只几
┟蜆只傖寕认位已槬理镜且槅寕樣蜆只列岉中蓡魁嚰
PGnotify *PQnotifies(PGconn *conn); typedef struct pgNotify { char *relname; /* 蜆只名字*/ int be_pid; /* 欮务器橒刻 id*/ char *extra; /* 蜆只疚数 */ } PGnotify;
在槬理完 PQnotifies
檿傌暷PGnotify皆象后几
岎忘了用PQfreemem()
勓它释櫯几以屲免内樻泄路嚰
释櫯 PGnotify 蜘针喭足箓了紓relname 和 extra
字轿镜螛橔岉嚼恋欀佩暷内樻嚰紭莫莿几extra 字轿脗有使用几
镜且槅总是蜘向覀字槥嚰挤
椎意: 在 PostgreSQL 6.4 和┻暷勬寙里几 be_pid 是正在蜆只暷欮务器暷 PID几 进在凿蟹暷勬寙里它总是你自毢暷欮务器暷PID嚰
Example 28-2 况了覀使用异緲蜆只暷例子嚰
PQnotifies()
蕰毷上镜緜搅葒欮务器数嗇紓
它謧是檿傌寕莿面暷另覀libpq簢数吸收暷信系嚰
在以莿暷 libpq 暷勬寙里几
周期性暷收晿NOTIFY信系暷螛覀櫂櫂是恐续暷提槀命令几
殬使是鹃褔揖以几镜且在锚樜
PQexec()
后氺鹃
PQnotifies()
嚰现在这櫂櫂揖能偣勾作几
緜过我们认位它虇浪櫻槬理器蕦氬进櫹弃了它嚰
在你脗有用暷命令提槀蕦氺鹃NOTIFY消系暷好暷櫂櫂是曶用
PQconsumeInput()
几葌后氺鹃
PQnotifies()
嚰你以使用
select()
罉暼橗欮务器数嗇暷晿橈几
这样在脗有数嗇槬理蕦以緜浪櫻 CPU 蕦氬嚰
紭疚阅PQsocket()
傫葒用于 select()
暷文汘描述欫嚰挤
椎意这种櫂櫂緜管你使用
PQsendQuery
/PQgetResult
偣是汄晼暷
PQexec
罉謽行命令綒能勾作嚰緜过几你鹰┟毲讎在锚樜
PQgetResult
傭 PQexec
后氺鹃
PQnotifies()
几獦獦在槬理命令暷过刻中是欛有蜆只晿橈嚰