Locking waits now for a shorter period. DB locking is used at other locations as well

This commit is contained in:
Michael 2017-06-05 14:59:53 +00:00
parent 8db079c65e
commit b86c4d539e
4 changed files with 26 additions and 16 deletions

View file

@ -816,7 +816,15 @@ class dba {
* @return boolean was the lock successful?
*/
static public function lock($table) {
return self::e("LOCK TABLES `".self::$dbo->escape($table)."` WRITE");
// See here: https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html
self::e("SET autocommit=0");
$success = self::e("LOCK TABLES `".self::$dbo->escape($table)."` WRITE");
if (!$success) {
self::e("SET autocommit=1");
} else {
self::$in_transaction = true;
}
return $success;
}
/**
@ -825,7 +833,12 @@ class dba {
* @return boolean was the unlock successful?
*/
static public function unlock() {
return self::e("UNLOCK TABLES");
// See here: https://dev.mysql.com/doc/refman/5.7/en/lock-tables-and-transactions.html
self::e("COMMIT");
$success = self::e("UNLOCK TABLES");
self::e("SET autocommit=1");
self::$in_transaction = false;
return $success;
}
/**