Re: [PDO] Question on Persistent PDO Connections
[email protected] (Lester Caine) Fri, 06 Nov 2009 08:38:17 +0000
| Newsgroups | php.pdo |
|---|---|
| Message-ID | <[email protected]> |
Christopher Jones wrote: > > Just to clarify terms here - what are you referring to by 'session'? > > Here session refers to the resources used by the PHP connection. In > OCI8, session & connection are pretty much synonymous. But if you had > a multi-threaded mid-tier you could code an application to have > multiple user sessions per physical DB connection. Fundamentally it's > a way of resource sharing. The connection is a "pipe" to the DB and > the session is the work being done across the pipe. > > > I would not expect transactions to remain open from one page load to > > the next, but that seems to be what some people are asking for? > > Anything that needs to be persistent across page loads should be > > held either in the database or outside transactions? > > > > One can not run a multiuser system if someone is going to start a > > transaction but not finish it - perhaps due to loss of connection .... > > Transaction monitors traditionally allow external control of > transaction state. In Oracle 11g this has been exposed through to a > simple API which is fun: a DB transaction can span multiple HTTP > requests. See > http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10471/adfns_xa.htm#ADFNS802 What happens in this example where the suspended transaction is never completed? Sounds like a recipe for disaster to me ;) Once a transaction is opened in Firebird, the MGA (Multi Generational Architecture) maintains a snapshot of the current state of records. Changes by other transactions can only be made if not blocked by other un-committed transactions, but everybody gets a clean view of the database. Holding transactions open maintains the view at the time the transaction was opened, and if not refreshed a some point, the 'last active transaction' counter does not advance. These means that long time running reports generate a clean set of results from that particular time - not broken by other activity on the database while the query was running. SO suspending a transaction would cause a major bottleneck that may block the database at some point if not cleared :( -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk// Firebird - http://www.firebirdsql.org/index.php