PHP and Postgres setup

Started by germ germabout 21 years ago15 messagesgeneral
Jump to latest
#1germ germ
super_code_monkey@yahoo.com

I have installed Postgres on Suse 9.1 and created a
test database but am unable to connect to it through
PHP.

What do I need to configure in order for Appache and
Postgres to be able to talk back and forth?

__________________________________
Do you Yahoo!?
Make Yahoo! your home page
http://www.yahoo.com/r/hs

#2Matthew Terenzio
matt@jobsforge.com
In reply to: germ germ (#1)
Re: PHP and Postgres setup

On Mar 21, 2005, at 8:10 AM, germ germ wrote:

What do I need to configure in order for Appache and
Postgres to be able to talk back and forth?

A couple things need to be done. It would help if you stated where and
what the failure message was. If you haven't gotten that far then start
with these items.

1. Check to see if you started postgres with a -i flag. this alows it
to receive connections over the internet.
2.Also, in pg_hba.conf you must make sure you are allowing connections
from the web server host. If that is the local host, you should be okay
if you can already connect with the given user and pass you are going
to use inside the PHP scripts. Restart postgres if you change this
file. remember the -i again.
3. And you must have PHP compiled with postgres support.

You don't really need to change Apache. At least it's not necessary to
start making connections to the DB.

#3Michael Fuhr
mike@fuhr.org
In reply to: germ germ (#1)
Re: PHP and Postgres setup

On Mon, Mar 21, 2005 at 05:10:46AM -0800, germ germ wrote:

I have installed Postgres on Suse 9.1 and created a
test database but am unable to connect to it through
PHP.

Please show the PHP code you're using to connect and any error
messages you get. Without seeing what you're doing and what's
happening, guesses about what's wrong would have little basis.

What do I need to configure in order for Appache and
Postgres to be able to talk back and forth?

See the "Database Users and Privileges" and "Client Authentication"
chapters in the PostgreSQL documentation. Verify that you can
connect to the database with psql before trying it with PHP. Make
sure PHP has PostgreSQL support (you can check by examining phpinfo()
output).

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

#4ON.KG
skyer@on.kg
In reply to: Michael Fuhr (#3)
Delay INSERT

Hi

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

Thanx

#5Michael Fuhr
mike@fuhr.org
In reply to: ON.KG (#4)
Re: Delay INSERT

On Wed, Mar 23, 2005 at 02:46:38PM +0300, ON.KG wrote:

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

What problem are you trying to solve? Are you aware that PostgreSQL
uses Multiversion Concurrency Control (MVCC) so readers and writers
don't block each other?

http://www.postgresql.org/docs/8.0/static/mvcc.html

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

#6Michael Fuhr
mike@fuhr.org
In reply to: germ germ (#1)
Re: Delay INSERT

On Wed, Mar 23, 2005 at 07:31:22PM +0300, ON.KG wrote:

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

What problem are you trying to solve? Are you aware that PostgreSQL
uses Multiversion Concurrency Control (MVCC) so readers and writers
don't block each other?

http://www.postgresql.org/docs/8.0/static/mvcc.html

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

#7Chris Browne
cbbrowne@acm.org
In reply to: germ germ (#1)
Re: Delay INSERT

After a long battle with technology, skyer@on.kg ("ON.KG"), an earthling, wrote:

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

What problem are you trying to solve by using "INSERT DELAYED"?

As far as I can tell, the problem solved using "INSERT DELAYED" is
that in MySQL AB's product, processes take out full table locks when
they modify tables.

That is completely irrelevant with PostgreSQL, as PostgreSQL does not
lock tables that way.

Unless your concern is something rather more abstruse, I think you're
trying to solve a problem that simply doesn't exist. There is no
reason to delay inserts in PostgreSQL because there are no such locks.
--
(format nil "~S@~S" "cbbrowne" "gmail.com")
http://linuxdatabases.info/info/slony.html
"I would rather spend 10 hours reading someone else's source code than
10 minutes listening to Musak waiting for technical support which
isn't." -- Dr. Greg Wettstein, Roger Maris Cancer Center

#8Richard Huxton
dev@archonet.com
In reply to: germ germ (#1)
Re: Delay INSERT

ON.KG wrote:

Hi

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

What precisely does this do?

--
Richard Huxton
Archonet Ltd

#9Harald Fuchs
use_reply_to@protecting.net
In reply to: germ germ (#1)
Re: Delay INSERT

In article <14435275218.20050323193122@on.kg>,
"ON.KG" <skyer@on.kg> writes:

Hi
Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

Every INSERT in PostgreSQL is delayed in some sense: firstly, it is
not visible to anyone else until you commit, and secondly, it is
written first to the (supposedly fast) write-ahead log and only later
to the table files.

If you have problems with INSERT speed, describe hardware,
configuration, and table structure.

#10ON.KG
skyer@on.kg
In reply to: Michael Fuhr (#3)
Delay INSERT

Hi

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

Thanx

#11Dawid Kuroczko
qnex42@gmail.com
In reply to: Richard Huxton (#8)
Re: Delay INSERT

On Wed, 23 Mar 2005 14:50:47 +0000, Richard Huxton <dev@archonet.com> wrote:

ON.KG wrote:

Hi

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?

or any other way to delay inserting?

What precisely does this do?

It adds an insert into a 'do this' queue and returns. From PostgreSQL-s
point of view it would be equivalent of issuing INSERT and not waiting
for the result.

The MySQL has this mainly because when other statement such as
SELECT or UPDATE is in progress, the INSERT would be blocked.

PostgreSQL doesn't have such issues with blocking, so only difference
between INSERT and INSERT DELAYED from PostgreSQL's standpoint
would be waiting and not for the result...

#12Richard Huxton
dev@archonet.com
In reply to: Dawid Kuroczko (#11)
Re: Delay INSERT

Dawid Kuroczko wrote:

On Wed, 23 Mar 2005 14:50:47 +0000, Richard Huxton <dev@archonet.com> wrote:

ON.KG wrote:

Does PostgreSQL have something like "INSERT DELAYD" - like it is used in
MySQL?
or any other way to delay inserting?

What precisely does this do?

It adds an insert into a 'do this' queue and returns. From PostgreSQL-s
point of view it would be equivalent of issuing INSERT and not waiting
for the result.

OK - thanks.

The MySQL has this mainly because when other statement such as
SELECT or UPDATE is in progress, the INSERT would be blocked.

PostgreSQL doesn't have such issues with blocking, so only difference
between INSERT and INSERT DELAYED from PostgreSQL's standpoint
would be waiting and not for the result...

Well, if you don't actually care whether it got inserted or not, just
throw the data away! That's got to be the quickest of all.

--
Richard Huxton
Archonet Ltd

#13Bruce Momjian
bruce@momjian.us
In reply to: Dawid Kuroczko (#11)
Re: Delay INSERT

Dawid Kuroczko <qnex42@gmail.com> writes:

PostgreSQL doesn't have such issues with blocking, so only difference
between INSERT and INSERT DELAYED from PostgreSQL's standpoint
would be waiting and not for the result...

An insert can be blocked if there's a UNIQUE constraint and another
transaction has an insert or update pending for the same key. If the other
transaction commits you get a unique constraint violation, if it aborts your
insert succeeds.

--
greg

#14Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dawid Kuroczko (#11)
Re: Delay INSERT

Dawid Kuroczko <qnex42@gmail.com> writes:

PostgreSQL doesn't have such issues with blocking, so only difference
between INSERT and INSERT DELAYED from PostgreSQL's standpoint
would be waiting and not for the result...

With the right client-side code you can transmit multiple queries before
receiving the result from the first one. I don't think libpq in its
current incarnation really supports this, but in principle it's doable.

The interesting questions have to do with error handling: if the
"delayed" insert fails, what happens and what is the impact on
subsequent queries? I have no idea how MySQL defines that.

regards, tom lane

#15Dawid Kuroczko
qnex42@gmail.com
In reply to: Tom Lane (#14)
Re: Delay INSERT

On Wed, 23 Mar 2005 12:33:00 -0500, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Dawid Kuroczko <qnex42@gmail.com> writes:

PostgreSQL doesn't have such issues with blocking, so only difference
between INSERT and INSERT DELAYED from PostgreSQL's standpoint
would be waiting and not for the result...

With the right client-side code you can transmit multiple queries before
receiving the result from the first one. I don't think libpq in its
current incarnation really supports this, but in principle it's doable.

...though I think it should be called asynchronic rather than
'delayed'. I.e. issue a statement then select(2) in a spare
time to get the result, doing other work in meantime.

The interesting questions have to do with error handling: if the
"delayed" insert fails, what happens and what is the impact on
subsequent queries? I have no idea how MySQL defines that.

Well, looking at the on-line mysql docs -- it is not documented,
I did however try to issue them (on 3.x mysql installation).
I've created a table with a single int PK column, then inserted
delayed few values, some of which broke PK contraint and these
were silently discared. There was no point checking how it would
work with transactions since ...delayed is MyISAM only and these
don't do transactions.

And as for PostgreSQL and asynchronic statements, I think it
should allow Pipelineing -- similar to NNTP or SMTP servers -- these would
send N commands to a server and then read them as-they-come-in.
Some usage example, imagine a web page which would:
$q1 = execute_async("SELECT foo FROM a");
$q2 = execute_async("SELECT * FROM polls LIMIT 5"); # whatever
$q3 = execute_async("SELECT baz FROM bazzz");
print some html; print $q1->fetchall, some html $q2->fetchall,
$q3->fetchall...

There is a question of synchronization and handling errors of course,
but I think it could be done and for some usage scenarios could be
quite benefitial.

Disclaimer: I never wrote a program using libpq, and I only looked
through libpq docs some time ago. If I am wrong, please forgive me.

Regards,
Dawid