$fn_name), array('limit' => 1)); if ((dbm::is_result($lock)) AND !$lock['locked']) { dba::update('locks', array('locked' => true), array('name' => $fn_name)); $got_lock = true; } elseif (!dbm::is_result($lock)) { dbm::insert('locks', array('name' => $fn_name, 'locked' => true)); $got_lock = true; } dbm::p("UNLOCK TABLES"); if (!$got_lock) { sleep($wait_sec); } } while (!$got_lock AND ((time() - $start) < $timeout)); logger('lock_function: function ' . $fn_name . ' with blocking = ' . $block . ' got_lock = ' . $got_lock . ' time = ' . (time() - $start), LOGGER_DEBUG); return $got_lock; } public static function remove($fn_name) { dba::update('locks', array('locked' => false), array('name' => $fn_name)); logger('unlock_function: released lock for function ' . $fn_name, LOGGER_DEBUG); return; } }