]> git.mxchange.org Git - friendica.git/commitdiff
Database locks are now having its very own functions
authorMichael <heluecht@pirati.ca>
Sun, 4 Jun 2017 12:59:29 +0000 (12:59 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 4 Jun 2017 12:59:29 +0000 (12:59 +0000)
include/dba.php
src/Util/Lock.php

index b9e6c32d56acff766aeec3ffc91af5b09f5a023c..1fff51f3d11975addf7f63f2bbf5de80edb27e33 100644 (file)
@@ -806,6 +806,28 @@ class dba {
                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
         *
index e8fa03f7843047497650e2706c97b6bc6d0a14e2..1a33e819f0f335da6eb2ddf0190a4d15fc560739 100644 (file)
@@ -34,7 +34,7 @@ class Lock {
                $start = time();
 
                do {
-                       dba::p("LOCK TABLE `locks` WRITE");
+                       dba::lock('locks');
                        $lock = dba::select('locks', array('locked', 'pid'), array('name' => $fn_name), array('limit' => 1));
 
                        if (dbm::is_result($lock)) {
@@ -57,7 +57,7 @@ class Lock {
                                $got_lock = true;
                        }
 
-                       dba::p("UNLOCK TABLES");
+                       dba::unlock();
 
                        if (!$got_lock) {
                                sleep($wait_sec);