首先,我们要分清楚,锁有2种,共享锁,以及独占锁
共享锁
共享锁用于某个文件不会被写,或者不会被更新(也就是只读)的情况,加了共享锁的文件,只能再加共享锁,而不能加独占锁
例如:
$file = fopen...同样,如果在上了共享锁的情况,增加独占锁,则该进程会阻塞,直到共享锁释放:
<?...同理,如果是先加了独占锁,则共享锁会被阻塞,不做详细说明
注意事项
共享锁加上之后,虽然不能再加上独占锁进行独占写入,但是还是会被未加锁的进程影响,所以注意,当你确定某个文件是只读,或者说读取的时候不被写入影响时...独占锁
独占锁用于数据可能会被修改的文件,当一个进程加上独占锁之后,其他进程将不能增加独占锁和共享锁(将会阻塞)
测试代码:
<?...其他
非阻塞
通过在flock函数中的参数中增加LOCK_NB,可以避免阻塞,当不能加锁时会直接返回失败:
<?