3 function mutex_lock ($name, $duration) {
6 $deleted_obsoletes = false;
7 db_insert('wfpl_mutexes', 'name,expires', $name, $now + $duration);
9 $rows = db_get_assocs('wfpl_mutexes', 'id,name,expires', 'order by id');
11 foreach ($rows as $row) {
12 if ($row['expires'] < $now) {
13 if (!$deleted_obsoletes) {
14 db_delete('wfpl_mutexes', 'where expires < %i', $now);
15 $deleted_obsoletes = true;
17 } elseif ($row['name'] === $name) {
18 if ($row['id'] == $id) {
26 db_delete('wfpl_mutexes', 'where id=%i', $id);
31 function mutex_unlock ($id) {
32 db_delete('wfpl_mutexes', 'where id=%i', $id);