On Mon, 12 Jan 2004, Douglas Douglas wrote:
> Hello.
>
> I've been fighting with this all day, trying to fix it but I
> couldn't. So here I am. I have Cygwin installed in a Win XP machine.
> PostgreSQL is running there. Apache and PHP are installed in Windows
> in the same computer. PostgreSQL is properly configured (even psql
> and pgAdmin III work).
>
> Since I've heard that sockets are more efficient that connecting to
> localhost, I decided to uncomment the lines:
> tcpip_socket = true
> port = 5432
> in the postgresql.conf file.
>
> But when I removed the host parameter from the connection string:
> pg_connect('dbname=mydb user=myuser password=mypass')
>
> I got this message:
> Warning: pg_connect(): Unable to connect to PostgreSQL server: could
> not create socket: An address incompatible with the requested
> protocol was used. (0x0000273F) . in c:\htdocs\testsockets.php on
> line 2
I'm pretty sure you're confusing unix domain sockets with tcpip_sockets,
which aren't the same thing. By default, postgresql only answers on unix
sockets, and tcpip has to be turned on.
PHP uses unix sockets if you DON'T express a host name in the connect
string, but when you do, it switches to tcpip sockets.
So, your tcpip_socket = true turns on tcpip while removing the host
parameter from pg_connect makes it try to connect via local unix sockets.
I don't think cygwin supports local unix sockets, but don't quote me on
that.
The performance difference is pretty small, if any, so don't worry too
much about it, just find a config that works and you're gold.