PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 27. libpq - C �� | Fast Forward | Next |
PostgreSQL ͨ��LISTEN��NOTIFY�����ṩ���첽֪ͨ��֧�֡� һ����������LISTEN����ע��һ��������Ȥ��֪ͨ���� ��Ҳ������UNLISTEN����ֹͣ�������� �������ڼ���ijһ֪ͨ�����ĻỰ�ڸ��������� NOTIFY��֪ͨ�����κλỰִ�к����첽��֪ͨ�� ֪ͨ�����߲��ᴫ�ݸ��ӵ���Ϣ�������ߡ���ˣ��ܵ��͵��ǣ� �κ�ʵ�ʵ���Ҫ�����ݵ����ݶ���ͨ��һ�����ݿ���ݵġ� ͨ������������������ı�ͬ�������Dz�����һ��Ҫ��ij������ز��С�
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 27-2 ������һ��ʹ���첽֪ͨ�����ӡ�
PQnotifies() ʵ���ϲ�����ȡ���������ݣ� ��ֻ�Ƿ��ر�ǰ�����һ��libpq�������յ���Ϣ�� ����ǰ�� libpq �İ汾� �����Ե��յ�NOTIFY��Ϣ��Ψһ�����dz������ύ��� ��ʹ�ǿղ�ѯҲ���ԣ�������ÿ�� PQexec()���� PQnotifies() �������������Ҳ�ܻ������� ����������Ϊ��̫�˷Ѵ�����ʱ�������������
����û�п��õ������ύʱ���NOTIFY��Ϣ�ĸ��õķ����ǵ��� PQconsumeInput()��Ȼ���� PQnotifies()�������ʹ�� select() ���ȴ����������ݵĵ�� ������û�����ݿɴ���ʱ���Բ��˷� CPU ʱ�䡣 ������PQsocket() ��ȡ���� select()���ļ����������� ע�����ַ���������ʹ�� PQsendQuery/PQgetResult ���Ǽ� PQexec��ִ������ܹ�������������Ӧ�ü�ס��ÿ�� PQgetResult �� PQexec���� PQnotifies() �������ڴ�������Ĺ������Ƿ���֪ͨ���