Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Test if file is locked

In PHP, how can I test if a file has already been locked with flock? For example, if another running script has called the following:

$fp = fopen('thefile.txt', 'w');
flock($fp, LOCK_EX);
like image 594
CL22 Avatar asked Dec 25 '13 10:12

CL22


1 Answers

if (!flock($fp, LOCK_EX|LOCK_NB, $wouldblock)) {
    if ($wouldblock) {
        // another process holds the lock
    }
    else {
        // couldn't lock for another reason, e.g. no such file
    }
}
else {
    // lock obtained
}

As described in the docs, use LOCK_NB to make a non-blocking attempt to obtain the lock, and on failure check the $wouldblock argument to see if something else holds the lock.

like image 108
Prateek Avatar answered Sep 21 '22 02:09

Prateek