Hi,
Thanks for the response - though I'm a bit confused the FD is all that is
required for the select call - so I think what you're saying is that the
postgres socket open mechanism isn't the same in php as the postgres C
development library.
I say this because I've implemented this exact mechanism in C++ before
without problem so I'm really not quite following - sorry. Is it that PHP
implements the underlying socket mechanism in a different way? I guess I'm
not quite understanding could you give me a few more details of the PHP
mechanism.
Many thanks
Nick
-----Original Message-----
From: pgsql-php-owner@postgresql.org [mailto:pgsql-php-owner@postgresql.org]
On Behalf Of Volkan YAZICI
Sent: 30 June 2005 11:11
To: Nick Stone
Cc: pgsql-php@postgresql.org
Subject: Re: [PHP] Pqsocket not implemented in PHP
Hi,
On 6/30/05, Nick Stone <nick@harelane.com> wrote:
> I'm currently implementing a standalone app using php cli. Part of the
> app connects to Postgres and waits for a notification using the
> "Listen <tablename>" SQL. In the postgres C lib there is a function
> called "Pqsocket" which returns the file-descriptor of the socket
> connection to Postgres. With this I can use a simple select server to
> sleep on this interface and others in the application.
>
> Does anybody now of a patch to make this available under PHP or does
> the structure of PHP code effectively make this type approach impossible?
You can write a very simple patch returns socket FD using PQsocket().
But, AFAIC, it's not as simple as it seems to listen a socket using just its
FD value. As I understand from the source code, resource required by
socket_open() function has its own internal struct representation, which
means you need to be familiar with PHP internal data types and mechanism
before writing a patch. Therefore, it's not impossible to implement such a
feature, but, to be honest, it needs a hard work.
IMHO, you can enter a loop with pg_last_notice() by using usleep(). I won't
think it'd cost so much system resource for you.
Regards.
---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend