如何检查文件句柄是否仍指向文件

时间:2015-05-11 15:26:14

标签: php file

在PHP中有没有办法测试fileHandle资源是否仍然指向它打开的文件系统中的文件?例如在这段代码中:

<?php

$filename = './foo.txt';
$fileHandle = fopen($filename, 'c');

$unlinked = unlink($filename);

if (!$unlinked) {
    echo "Failed to unlink file.";
    exit(0);
}

file_put_contents($filename, "blah blah");

// The file $filename will exist here, but I want to check that
// the $fileHandle still points to the file on the filesystem name $filename.
?>

在该代码的末尾,fileHandle仍然存在但不再引用文件&#39; ./ foo.txt&#39;在文件系统上。它仍然保留对已取消链接的原始文件的引用,即它在文件系统中没有活动条目,并且将数据写入fileHandle不会影响名为$ filename的文件的内容。

是否存在(最好是原子)操作来确定$ fileHandle现在是无效的&#39;从某种意义上说,它不再指向原始文件?

1 个答案:

答案 0 :(得分:0)

这不是原子操作,但在Linux(和其他Unix系统)上,可以使用文件名stat和fileHandle上的fstat进行检查,并比较每个文件返回的inode功能

这不适用于Windows,这不是最佳选择。

SELECT column_1, COUNT(*) AS "my_count"
FROM "my_table"
WHERE column_1 IN(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
AND another_column = '20150609'
GROUP BY column_1;