cliftonbazaar Posted April 11, 2013 Share Posted April 11, 2013 I have the following piece of code (if anyone can think of a better way then please tell me). mysql_query("BEGIN"); #NOTE that we are only going to load in games that need to be updated so there is no need to set an IF statement if(@$my_team['inGame']) {$my_team_ID = $my_team['inGame'];} else{$my_team_ID=0;} $matches = mysql_query("SELECT * FROM matches WHERE completed=0 and $current_time > updateTime ORDER BY matchID ASC LOCK IN SHARE MODE "); //Get all the matches that need updating while($match = mysql_fetch_array($matches)) { //Go through all the matches that need updating $notes .= "<p>MatchID - ".$match['matchID']." ".$match['homeTeam']." V ".$match['awayTeam']; $updateTime=$match['updateTime']; #Get the updateTime from the match ID include("run_game.php"); #This is the actual file that runs the game $notes .= "<BR>This is the string data".$stringData."<BR>"; #Output it to make sure it works } mysql_query("COMMIT"); # Here the datarecords are released and the transaction is completed This code works fine - the 'matches' database is only updated once; the problem is if it is run from two differant directions then ANOTHER part of the code in run_game.php is run and updated, this is not what I wanted How can I get this query NOT to activate on locked rows? I tried Google but I dont' know what to search for Quote Link to comment Share on other sites More sharing options...
cliftonbazaar Posted April 13, 2013 Author Share Posted April 13, 2013 Bump Quote Link to comment Share on other sites More sharing options...
ignace Posted April 13, 2013 Share Posted April 13, 2013 If you use FOR UPDATE with a storage engine that uses page or row locks, rows examined by the query are write-locked until the end of the current transaction. Using LOCK IN SHARE MODE sets a shared lock that permits other transactions to read the examined rows but not to update or delete them. You need INNODB for this to work. Quote Link to comment Share on other sites More sharing options...
cliftonbazaar Posted April 15, 2013 Author Share Posted April 15, 2013 (edited) You need INNODB for this to work. Hi, The actual locking of the row of the table is done correctly, but its till runs the code in the WHILE loop, I wish to make it that if the loop is locked the WHILE loop does NOT active. Edited April 15, 2013 by cliftonbazaar Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.