Re: PostgreSQL locking from PHP scripts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Tuesday 07 November 2006 02:54, Rick Morris wrote:
> Robert Treat wrote:
> > On Monday 06 November 2006 20:24, Chris wrote:
> >> Herbie McDuck wrote:
> >>> Alan Hodgson wrote:
> >>>> On Thursday 26 October 2006 11:11, Amal burman <amalburman@xxxxxxxxx>
> >>>>
> >>>> wrote:
> >>>>> postgresql database for this project. Here script one
> >>>>> (booking.php) tries to setup a lock for update and ask
> >>>>> user to fill-up the form. Now when the user fill-up
> >>>>> the form and submit it for update, second script
> >>>>> (update.php) update the database and releasing the
> >>>>> locks.
> >>>>
> >>>> You can't do this kind of thing in PHP.  PHP resets the database
> >>>> connection between scripts.   The script is finished as soon as the
> >>>> page is delivered to the client.
> >>>>
> >>>> Also, web connections are stateless and there is no way to even know
> >>>> what web server process or database connection you'll be getting on
> >>>> subsequent page views.
> >>>
> >>> So is PHP and 'ANY' database a useless adventure when it goes to
> >>> developing a robust business and accounting package?
> >>
> >> No, it applies to anything you do in a web browser.
> >>
> >> The HTTP protocol is "stateless" which means all resources, connections
> >> etc are killed at the end of the script. Resources of any type are not
> >> kept alive at the end of a script.
> >>
> >> It's not a php thing or <insert random language here>, it's a HTTP
> >> protocol thing.
> >
> > In theory you can use prepared transactions to get around this, but I've
> > never seen anyone fully implement it in PHP.
>
> How exactly would that work? With PDO Prepare/Execute? Would you prepare
> a transaction, and then store the PDOStatement object as a session var?
>

Your thinking of prepared statements, which are something different entirely. 
I'm talking about prepared transactions, which are typically used for 2 phase 
commit implementations. 
http://www.postgresql.org/docs/8.1/interactive/sql-prepare-transaction.html

> Or do you mean this is something that would have to be implemented in
> PHP internals?

Actually it canall be done at the SQL level, although if you were going to do 
it seriously I'd suspect that you'd want to add some php internal functions 
to do it, though aiui there aren't any knobs you'd get from libpq to do this, 
so not sure what that would like like on the php end.  

In any case upon a bit more reflection prepared transactions really wouldn't 
allow you to do what the OP wanted, so it's all kind of moot.  

-- 
Robert Treat
Build A Brighter LAMP :: Linux Apache {middleware} PostgreSQL


[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux