如果您确实使用了简单的 fopen/fwrite(),例如:
$ref = @fopen('/path/to/file', 'x+b'); // returns false if already exists
if ($ref) {
fwrite($ref, 'A');
sleep(5);
fwrite($ref, 'B');
}
如果其他进程在睡眠期间删除了文件,如何检查文件指针是否仍然有效?
我考虑过使用简单的 is_file() 检查,但这并不能说明另一个进程是否执行了 unlink() 然后创建了一个具有相同路径的新文件。
作为参考,即使文件已取消链接(),fwrite 似乎仍然返回 true。
编辑:澄清一下,sleep(5) 只是一个随机时间,在竞争条件下可能只是几毫秒。