如果你只需要找出两个文件是否相同,比较文件哈希可能效率低下,尤其是在大型文件上。如果每个文件的第二个字节不同,则没有理由读取两个完整的文件并进行所有计算。如果你不需要将哈希值存储以供以后使用,则可能不需要计算哈希值只是为了比较文件。这可能快得多
<?php
define('READ_LEN', 4096);
if(files_identical('file1.txt', 'file2.txt'))
echo '文件相同';
else
echo '文件不同';
function files_identical($fn1, $fn2) {
if(filetype($fn1) !== filetype($fn2))
return FALSE;
if(filesize($fn1) !== filesize($fn2))
return FALSE;
if(!$fp1 = fopen($fn1, 'rb'))
return FALSE;
if(!$fp2 = fopen($fn2, 'rb')) {
fclose($fp1);
return FALSE;
}
$same = TRUE;
while (!feof($fp1) and !feof($fp2))
if(fread($fp1, READ_LEN) !== fread($fp2, READ_LEN)) {
$same = FALSE;
break;
}
if(feof($fp1) !== feof($fp2))
$same = FALSE;
fclose($fp1);
fclose($fp2);
return $same;
}
?>