[PHP-DB] apache/php/mysql - guarenteed DB transaction
Hi all. Question on running in a config with Apache2,PHP 4.3.4,MySQL 4.0.17 running on Linux Redhat 9.0. Basically I want to make sure that a DB insert or update is guarenteed to complete. So if a user hits submit on a webpage, the transaction under the hood completes, no matter if the user hits cancel or his browser dies or whatever. (Not sure how to even test this condition, but I know it will happen) Below is a sample of my PHP which does one thing, simple insert into mysql. I am using MyISAM table types, and would like to maintain this if possible. Any help or pointers would be greatly appreciated. David [EMAIL PROTECTED] ?php // mysqltest.php // Main Variables $dbhost = localhost; $dbuser = user; $dbpass = pass; $dbname = test; // open persistent DB connection $dbcnx = @mysql_pconnect($dbhost, $dbuser, $dbpass) or die(The site database appears to be down.); if ($db!= and [EMAIL PROTECTED]($db)) die(The site database is unavailable.); // Open DB Persistent Connection $dbcnx = dbPConnect(); // Execute check against database mysql_select_db($dbname, $dbcnx); // Create SQL $sql = INSERT INTO mytable SET field1='update to field1',field2='update to field2'; // // Execute SQL // $result = mysql_query($sql); // $result = 1 if success if ($result == '1') { echo Finished with DB insert; } else { echo Failed.; } ? -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] apache/php/mysql - guarenteed DB transaction
snip So if a user hits submit on a webpage, the transaction under the hood completes, no matter if the user hits cancel or his browser dies or whatever. (Not sure how to even test this condition, but I know it will happen) /snip Once php has the request, hitting cancel on the browser or a browser dying will not stop the php script from executing all the way through. -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] apache/php/mysql - guarenteed DB transaction
On Wednesday 04 February 2004 23:46, Matt Matijevich wrote: Once php has the request, hitting cancel on the browser or a browser dying will not stop the php script from executing all the way through. Actually whether the script runs through to completion depends on the 'ignore_user_abort' setting. -- Jason Wong - Gremlins Associates - www.gremlins.biz Open Source Software Systems Integrators * Web Design Hosting * Internet Intranet Applications Development * -- Search the list archives before you post http://marc.theaimsgroup.com/?l=php-db -- /* I don't care who does the electing as long as I get to do the nominating. -- Boss Tweed */ -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP-DB] apache/php/mysql - guarenteed DB transaction
snip Actually whether the script runs through to completion depends on the 'ignore_user_abort' setting. /snip wow, guess you learn something everyday. wish I would have known about that when I wrote a php script with some terrible (lots of joins, just poorly designed) queries that took down my webserver :( -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP-DB] apache/php/mysql - guarenteed DB transaction
Thanks guys, this is great info. One last thought, Suppose I have several DB transactions that I want to treat as 1 logical transaction that I need to complete guarenteed. For instance, an INSERT to one table, and a DELETE to another, and an UPDATE to a third. All need to complete once a user selects submit. What's the best approach to this scenario? Thanks in advance for the help, David -Original Message- From: Matt Matijevich [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 04, 2004 11:17 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: [PHP-DB] apache/php/mysql - guarenteed DB transaction snip Actually whether the script runs through to completion depends on the 'ignore_user_abort' setting. /snip wow, guess you learn something everyday. wish I would have known about that when I wrote a php script with some terrible (lots of joins, just poorly designed) queries that took down my webserver :( -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP-DB] apache/php/mysql - guarenteed DB transaction
snip Suppose I have several DB transactions that I want to treat as 1 logical transaction that I need to complete guarenteed. For instance, an INSERT to one table, and a DELETE to another, and an UPDATE to a third. All need to complete once a user selects submit. What's the best approach to this scenario? /snip this is the pseudo code i would use: start the transaction INSERT DELETE UPDATE if everything is ok, commit, else rollback -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Res: [PHP-DB] apache/php/mysql - guarenteed DB transaction
Hi, I had a similar problem andI solved it using transations, but I had to use InnoDB table types... Regards, Ricardo ---Mensagem original--- De: whynotpizza Data: 02/04/04 15:33:37 Para: [EMAIL PROTECTED] Assunto: [PHP-DB] apache/php/mysql - guarenteed DB transaction Hi all. Question on running in a config with Apache2,PHP 4.3.4,MySQL 4.0.17 running on Linux Redhat 9.0. Basically I want to make sure that a DB insert or update is guarenteed to complete. So if a user hits submit on a webpage, the transaction under the hood completes, no matter if the user hits cancel or his browser dies or whatever. (Not sure how to even test this condition, but I know it will happen) Below is a sample of my PHP which does one thing, simple insert into mysql. I am using MyISAM table types, and would like to maintain this if possible. Any help or pointers would be greatly appreciated. David [EMAIL PROTECTED] ?php // mysqltest.php // Main Variables $dbhost = "localhost"; $dbuser = "user"; $dbpass = "pass"; $dbname = "test"; // open persistent DB connection $dbcnx = @mysql_pconnect($dbhost, $dbuser, $dbpass) or die("The site database appears to be down."); if ($db!="" and [EMAIL PROTECTED]($db)) die("The site database is unavailable."); // Open DB Persistent Connection $dbcnx = dbPConnect(); // Execute check against database mysql_select_db($dbname, $dbcnx); // Create SQL $sql = "INSERT INTO mytable SET field1='update to field1',field2='update to field2'"; // // Execute SQL // $result = mysql_query($sql); // $result = 1 if success if ($result == '1') { echo "Finished with DB insert"; } else { echo "Failed."; } ? -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php IncrediMail - O mundo do correio eletrĂ´nico finalmente desenvolveu-se - Clique aqui
Res: RE: [PHP-DB] apache/php/mysql - guarenteed DB transaction
You should use set autocommit = 0; start transaction; insert code; delete code; update code; commit or rollback depending on the result; To do all this I had to use InnoDB table types. Sorry, my english is quite pour, Best regards, Ricardo ---Mensagem original--- De: whynotpizza Data: 02/04/04 20:39:13 Para: 'Matt Matijevich'; [EMAIL PROTECTED]; [EMAIL PROTECTED] Assunto: RE: [PHP-DB] apache/php/mysql - guarenteed DB transaction Thanks guys, this is great info. One last thought, Suppose I have several DB transactions that I want to treat as 1 logical transaction that I need to complete guarenteed. For instance, an INSERT to one table, and a DELETE to another, and an UPDATE to a third. All need to complete once a user selects submit. What's the best approach to this scenario? Thanks in advance for the help, David -Original Message- From: Matt Matijevich [mailto:[EMAIL PROTECTED]] Sent: Wednesday, February 04, 2004 11:17 AM To: [EMAIL PROTECTED]; [EMAIL PROTECTED] Subject: Re: [PHP-DB] apache/php/mysql - guarenteed DB transaction snip Actually whether the script runs through to completion depends on the 'ignore_user_abort' setting. /snip wow, guess you learn something everyday. wish I would have known about that when I wrote a php script with some terrible (lots of joins, just poorly designed) queries that took down my webserver :( -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php IncrediMail - O mundo do correio eletrĂ´nico finalmente desenvolveu-se - Clique aqui