Received: from candle.pha.pa.us (candle.navpoint.com [162.33.245.46] (may be forged)) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f17JEHx91796 for ; Wed, 7 Feb 2001 14:14:17 -0500 (EST) (envelope-from pgman@candle.pha.pa.us) Received: (from pgman@localhost) by candle.pha.pa.us (8.9.0/8.9.0) id OAA27530; Wed, 7 Feb 2001 14:12:27 -0500 (EST) From: Bruce Momjian Message-Id: <200102071912.OAA27530@candle.pha.pa.us> Subject: PostgreSQL and PHP persistent connections To: "Thies C. Arntzen" Date: Wed, 7 Feb 2001 14:12:26 -0500 (EST) CC: Rasmus@candle.pha.pa.us, Lerdorf , PostgreSQL-interfaces X-Mailer: ELM [version 2.4ME+ PL77 (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Archive-Number: 200102/46 X-Sequence-Number: 999 Thies, we talked at LinuxWorld about improving the reliability of persistent PostgreSQL connections in PHP. I believe the problem is that persistent connections sometime do not pass clean sessions because of open transactions and SET changes to the session. We discussed using 'ROLLBACK' before passing a connection to a new user, but the problem was that ROLLBACK with no open transaction causes a server log error message. We discussed adding 'ROLLBACK SILENT' to fix this, but I believe a better, more portable solution is a simple "BEGIN WORK;ROLLBACK". This will do nothing if there is no open transaction, and will ROLLBACK any open transaction. I propose this be sent by PHP as the first query when passing persistent connections. As far as SET changes, does anyone on the PostgreSQL interfaces list have a suggestion on how to RESET all session parameters? Seems we may need to add this feature in to the backend. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026