Re: Pqsocket not implemented in PHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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@xxxxxxxxxxxxxx [mailto:pgsql-php-owner@xxxxxxxxxxxxxx]
On Behalf Of Volkan YAZICI
Sent: 30 June 2005 11:11
To: Nick Stone
Cc: pgsql-php@xxxxxxxxxxxxxx
Subject: Re: [PHP] Pqsocket not implemented in PHP

Hi,

On 6/30/05, Nick Stone <nick@xxxxxxxxxxxx> 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





[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux