看来,当php使用flock()获取一个文件的排他锁,然后使用pcntl_fork拆分成两个进程时,两个进程拥有相同的排他锁——也就是说,进一步调用flock($fd, LOCK_EX ) 在该文件句柄上返回 true。
但是,使用flock 的目的是防止两个进程同时写入同一个文件。那么 PHP 是如何处理这种情况的呢?它是否允许以某种方式都具有排他锁的两个进程发生冲突?一个进程是否有任何方法(无需创建新的文件处理程序)来检测另一个进程是否已释放锁?
这主要是学术好奇心。我知道这可以通过创建一个新的文件处理程序来处理,或者作为最后的手段使用 IPC 通知其他进程,但我想知道 flock 系统中是否有内置方法来检测锁的重复?