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 Link to comment https://forums.phpfreaks.com/topic/276800-how-to-stop-a-code-from-working-if-the-row-is-locked/ Share on other sites More sharing options...
cliftonbazaar Posted April 13, 2013 Author Share Posted April 13, 2013 Bump Link to comment https://forums.phpfreaks.com/topic/276800-how-to-stop-a-code-from-working-if-the-row-is-locked/#findComment-1424513 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. Link to comment https://forums.phpfreaks.com/topic/276800-how-to-stop-a-code-from-working-if-the-row-is-locked/#findComment-1424533 Share on other sites More sharing options...
cliftonbazaar Posted April 15, 2013 Author Share Posted April 15, 2013 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. Link to comment https://forums.phpfreaks.com/topic/276800-how-to-stop-a-code-from-working-if-the-row-is-locked/#findComment-1424782 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.