Обсуждение: 2 distinct connections
We're working on a project using PHP and PostgreSQL, mainly trying to work
in an OOP fashion. The project has quite a good amount of code, and a DB
Object called DB_Bib that has all the query methods. I also have a generic
DB object (DB_Main) which has code to establesh the connection, and from
which my DB_bib Inerits the DB connection.
The thing is that I made a new class called DB_Debug which also inherits
from DB_Main, and is there to have debugging data inserted into a table in
the database.
I noticed that when the two objects are started (they both call the
connection method using the same connection string) php doesn't
initiate to distinct connections, but 1 connection within commands from
both objects get passed to the DB server.
The problem is that query commands from the DB_Debug object and from the
DB_Bib object get mixed up in the same connection, making it deficult to
know when to make a commit.
Is there a way to fix this without having to change the connection string?
--
21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------
Hi Martin Did you try passing the constant PGSQL_CONNECT_FORCE_NEW to the Debug-connect? regards Conni
On Sat, 27 May 2006, Cornelia Boenigk wrote:
> Hi Martin
>
> Did you try passing the constant PGSQL_CONNECT_FORCE_NEW to the
> Debug-connect?
Excelente. I forgot to say that I'm working with PEAR::DB, and just found
this in DB/pgsql.php:
if (isset($dsn['new_link'])
&& ($dsn['new_link'] == 'true' || $dsn['new_link'] === true))
{
if (version_compare(phpversion(), '4.3.0', '>=')) {
$params[] = PGSQL_CONNECT_FORCE_NEW;
}
}
I always forget to "use the source Luke!" :-)
thanks!
--
21:50:04 up 2 days, 9:07, 0 users, load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' ||
Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional | DBA, Programador,
del Litoral | Administrador
---------------------------------------------------------
On May 27 09:37, Martin Marques wrote: > We're working on a project using PHP and PostgreSQL, mainly trying to work > in an OOP fashion. The project has quite a good amount of code, and a DB > Object called DB_Bib that has all the query methods. I also have a generic > DB object (DB_Main) which has code to establesh the connection, and from > which my DB_bib Inerits the DB connection. > > The thing is that I made a new class called DB_Debug which also inherits > from DB_Main, and is there to have debugging data inserted into a table in > the database. > > I noticed that when the two objects are started (they both call the > connection method using the same connection string) php doesn't > initiate to distinct connections, but 1 connection within commands from > both objects get passed to the DB server. > > The problem is that query commands from the DB_Debug object and from the > DB_Bib object get mixed up in the same connection, making it deficult to > know when to make a commit. As Cornelia Boenig suggested, you can force pg_connect() to establish a new connection on every call. Also if you don't want to exhaust max_connections limit, you can serialize queries using semaphores (or mutex). Regards.