Re: transactions and persitent connections

From: Date: Sun, 01 Sep 2002 11:55:36 +0000
Subject: Re: transactions and persitent connections
References: 1 2 3  Groups: php.db 
Request: Send a blank email to php-db+get-21504@lists.php.net to get a copy of this message
At 12:52 +0900 9/1/02, Jean-Christian Imbeault wrote:
Paul Dubois wrote:
I am worried that if I use persistent connections it might be possible for more than one PHP script to be inside the same transaction at the same time.
Not at the *same* time, because although a persistent connect might be used by more than one script, this will be serially rather than simultaneously. That does mean it's possible for a transaction to be started by one script and then either committed or rolled back by the next if they share a connection.
That's exactly what I meant and feared. In a sense User 2 who is re-using User 1's connection would be in User 1's "un-completed" transaction. And the result of User 2's transaction (commit or rollback) would affect the first transaction. Yuck ...
2- If user 1's hits the stop button on his browser, what happens to his transaction? I assume it is stopped. But what about the connection? If user 2
No, the script won't have any idea the stop button has been pressed. It should have executed and completed its transaction regardless of what the user does.
Really? I don't exactly know how PHP script execute but I though that is that the user goes to a page that starts a script and then closes the browser that causes the script to end prematurely.
The script doesn't know anything about what the browser does.
Am I wrong?
Yes.
Does the script go from start to finish even though the connection to the browser has been severed. I.e. The script will run complete even if there is output to the browser as the script is running?
Not necessarily. It won't base its actions on what the browser might happen to be doing while it's running, but it might exit early because of a bug, for example. But normally it will run to completion.
If the script goes from start to finish regardless of what the user does that would be nice. That way I am sure a transaction will go from start to finish, and if I make sure to either commit or rollback the transaction at the end of the script then I don't have to worry.
You should write your script so that is *does* go from start to finish. Forget about what the user might be doing.
Maybe the safest thing to do is not use persistent connections at all? Or in your opinion is there a safe way to use persistent connections and transactions?
No. Don't use persistent connections. If some unforeseen problem does occur with your script, the connection may be left open and you'll have the problems you're concerned about. If you use a non-persistent connection and a problem occurs, the connection will be closed (which presumably will make your transaction roll back).
Jc PS Great book! -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.db (#21504) next »