php 查文件sha1 内存不足,SHA是否足以检查文件重复? (PHP中的sha1_file)

sha1_file足够好吗?

使用sha1_file就足够了,碰撞的可能性非常小,但这种情况几乎不会发生.为了减少几乎0比较文件大小的几率:

function is_duplicate_file( $file1,$file2)

{

if(filesize($file1) !== filesize($file2)) return false;

if( sha1_file($file1) == sha1_file($file2) ) return true;

return false;

}

md5比sha1快,但它产生的独特输出较少,使用md5时碰撞的机会仍然很小.

可扩展性?

有几种比较文件的方法,使用哪种方法取决于您的性能问题,我对不同的方法进行了小测试:

1-直接文件比较:

if( file_get_contents($file1) != file_get_contents($file2) )

2- Sha1_file

if( sha1_file($file1) != sha1_file($file2) )

3- md5_file

if( md5_file($file1) != md5_file($file2) )

结果:

2个文件每个1.2MB进行100次比较,得到以下结果:

--------------------------------------------------------

method time(s) peak memory

--------------------------------------------------------

file_get_contents 0.5 2,721,576

sha1_file 1.86 142,960

mdf5_file 1.6 142,848

file_get_contents比sha1快3.7,但它不是内存效率.

Sha1_file和md5_file是内存高效的,它们使用了file_get_contents使用的内存的大约5%.

md5_file可能是更好的选择,因为它比sha1快一点.

因此,结论是,如果您想要更快的比较或更少的内存使用,它取决于它.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值