PHP check if file locked with flock()?

TheDeadMedic picture TheDeadMedic · Jun 30, 2010 · Viewed 7.1k times · Source

Will fopen() fail if a file exists, but is currently locked with LOCK_EX?

Or do I have to open it, and then try and set a lock, in order to determine if one already exists?

I've also read that flock() will;

pause [the script] untill you get the lock for indefinite amount of time or till your script times out

http://www.php.net/manual/en/function.flock.php#95257

If so, is it true this 'pause' can be by-passed with;

if (!flock($f, LOCK_SH | LOCK_NB)) {
    // file locked, do something else
}

Answer

Daniel Egeberg picture Daniel Egeberg · Jun 30, 2010

flock() doesn't actually prevent you from reading/writing to a file, it only allows you to "communicate" the ideas of locking to other scripts. You can detect if there is a lock on a file using the snippet you posted.