Re: [PDO] Question on Persistent PDO Connections
[email protected] (Lester Caine) Fri, 06 Nov 2009 18:44:26 +0000
| Newsgroups | php.pdo |
|---|---|
| Message-ID | <[email protected]> |
Christopher Jones wrote: > > > Lester Caine wrote: > > 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 ;) > > That why they call them "monitors". TPMs monitor the transaction state > and resolve "in-doubt" transactions according to configured rules. > This is the same as an e-commerce website having to decide when a > shopping cart has been abandoned. But in the case of the shopping cart, you would not leave it I a floating transaction. Depending on how you work, either you only confirm stock availability when the order is placed, or alternatively you 'pre-book' stock to ensure availability and then release it back when the 'basket' times out. Transactions should never be 'in-doubt' they are either active - or if orphaned they get rolled back. The shopping basket would be safely committed in a temporary table of some sort and stock availability managed against committed records. -- 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