LISTEN/NOTIFY
I'm developing an e-commerce site using Apache/mod_perl and, for
performance, I intend to cache rows such as user and product information
inside Perl. I think the LISTEN/NOTIFY interface would be perfect for
invalidating the cache when a product/user gets updated, yet I have not
found a way to access it from Perl -- DBI, or DBD::Pg even, offer no way
to "listen". Also, I don't really like the vanilla Pg. So, my question
to you is, is there another efficient way to accomplish notification of
updates?
Thank you
Crist�v�o
I did something similar using python with a simple "getnotify()" function
(part of the python pg module).
I couldn't find a similar function for perl -- strange.
I think the listening process needs to be a separate process anyway, since I
wouldn't think that an apache process would easily be able to wait for a
notification.
You could just do the cache invalidation process in another language, like
python or C, and all that would do is listen for an update, read the updated
info, and replace the cache. It should be small enough that you don't mind
straying from perl, hopefully.
Of course it is weird that perl doesn't support that. Maybe I missed something
too.
Regards,
Jeff Davis
Show quoted text
On Friday 04 October 2002 01:49 pm, Crist�v�o Dalla Costa wrote:
I'm developing an e-commerce site using Apache/mod_perl and, for
performance, I intend to cache rows such as user and product information
inside Perl. I think the LISTEN/NOTIFY interface would be perfect for
invalidating the cache when a product/user gets updated, yet I have not
found a way to access it from Perl -- DBI, or DBD::Pg even, offer no way
to "listen". Also, I don't really like the vanilla Pg. So, my question
to you is, is there another efficient way to accomplish notification of
updates?Thank you
Crist�v�o
---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?
=?ISO-8859-1?Q?Crist=F3v=E3o_Dalla_Costa?= <cbraga@bsi.com.br> writes:
I'm developing an e-commerce site using Apache/mod_perl and, for
performance, I intend to cache rows such as user and product information
inside Perl. I think the LISTEN/NOTIFY interface would be perfect for
invalidating the cache when a product/user gets updated, yet I have not
found a way to access it from Perl -- DBI, or DBD::Pg even, offer no way
to "listen".
I don't know what the DBI/DBD design philosophy is regarding
database-specific extensions --- but it would seem reasonable to me
for DBD::Pg to offer some way to get at LISTEN functionality. Can
anyone suggest how to do this in the context of DBI?
I suggest moving any followups to pgsql-interfaces, where this
discussion would be more on-topic.
regards, tom lane
On Fri, 4 Oct 2002, Tom Lane wrote:
=?ISO-8859-1?Q?Crist=F3v=E3o_Dalla_Costa?= <cbraga@bsi.com.br> writes:
I'm developing an e-commerce site using Apache/mod_perl and, for
performance, I intend to cache rows such as user and product information
inside Perl. I think the LISTEN/NOTIFY interface would be perfect for
invalidating the cache when a product/user gets updated, yet I have not
found a way to access it from Perl -- DBI, or DBD::Pg even, offer no way
to "listen".
See this:
http://archives.postgresql.org/pgsql-interfaces/2002-01/msg00018.php
I don't know what the DBI/DBD design philosophy is regarding
database-specific extensions --- but it would seem reasonable to me for
DBD::Pg to offer some way to get at LISTEN functionality. Can anyone
suggest how to do this in the context of DBI?
It uses generic func() interface...
I suggest moving any followups to pgsql-interfaces, where this
discussion would be more on-topic.
-alex
alex@pilosoft.com writes:
See this:
http://archives.postgresql.org/pgsql-interfaces/2002-01/msg00018.php
Ah, I'd forgotten about that. Did it get accepted into DBD::Pg?
regards, tom lane