Database locks are now having its very own functions
This commit is contained in:
parent
5de03c1b27
commit
d2cb87a200
|
@ -806,6 +806,28 @@ class dba {
|
||||||
return self::e($sql, $param);
|
return self::e($sql, $param);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Locks a table for exclusive write access
|
||||||
|
*
|
||||||
|
* This function can be extended in the future to accept a table array as well.
|
||||||
|
*
|
||||||
|
* @param string $table Table name
|
||||||
|
*
|
||||||
|
* @return boolean was the lock successful?
|
||||||
|
*/
|
||||||
|
static public function lock($table) {
|
||||||
|
return self::e("LOCK TABLES `".self::$dbo->escape($table)."` WRITE");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Unlocks all locked tables
|
||||||
|
*
|
||||||
|
* @return boolean was the unlock successful?
|
||||||
|
*/
|
||||||
|
static public function unlock() {
|
||||||
|
return self::e("UNLOCK TABLES");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Starts a transaction
|
* @brief Starts a transaction
|
||||||
*
|
*
|
||||||
|
|
|
@ -34,7 +34,7 @@ class Lock {
|
||||||
$start = time();
|
$start = time();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
dba::p("LOCK TABLE `locks` WRITE");
|
dba::lock('locks');
|
||||||
$lock = dba::select('locks', array('locked', 'pid'), array('name' => $fn_name), array('limit' => 1));
|
$lock = dba::select('locks', array('locked', 'pid'), array('name' => $fn_name), array('limit' => 1));
|
||||||
|
|
||||||
if (dbm::is_result($lock)) {
|
if (dbm::is_result($lock)) {
|
||||||
|
@ -57,7 +57,7 @@ class Lock {
|
||||||
$got_lock = true;
|
$got_lock = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
dba::p("UNLOCK TABLES");
|
dba::unlock();
|
||||||
|
|
||||||
if (!$got_lock) {
|
if (!$got_lock) {
|
||||||
sleep($wait_sec);
|
sleep($wait_sec);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user