测试锁定文件


testing locking a file

我锁定了一个文件,我正在尝试测试系统对锁定文件的反应。我希望其他进程等待进程被释放,直到它们可以再次require_once该文件,并且不要返回错误。

问题是无论我做什么,我似乎都无法锁定文件并在另一个进程请求文件时进行一些等待,并查看系统对该锁定文件的反应。

我试过了
1. sleep()不起作用,它会停止整个 php 引擎。
2.我创建了一个批处理文件,该文件只是暂停,直到您按回车键。并使用exec("cmd.exe /c START c:''1.bat");

所以预感是所有进程实际上都是一个连续的任务队列,因此,如果一个进程因任何原因暂停,那么所有其他进程也是如此?

那么我该如何测试文件是否被锁定?
但是,当然,如果我是对的,如果其他进程无论如何都无法访问该文件,那么锁定文件有什么意义呢?

$file = fopen('somefile.php', 'r+');
while(!flock($file, LOCK_SH | LOCK_NB)) {
    sleep(1);
}
require 'somefile.php';

由于 flock 似乎在 php 脚本中不起作用,因此您需要检查是否存在锁。

require_once

PHP处理。因此,您不能简单地为其获取 AFAIK 的锁。如果您查看文件锁定,请参阅此处
它指出,每当您尝试访问锁定的文件时,都应使用锁。