[PHP-users 33025] Re: ファイルの内容が同一のファイルを検索するには

鈴木孝征 takamasa @ thaliana.myhome.cx
2007年 12月 13日 (木) 12:11:55 JST


鈴木と申します。

> PHP5を使っています。
> ファイルの内容が同一(ファイル名が異なる)のファイルを検索するプログラムをPHPで作ろうと思っています。hash_fileという関数がありますので、その関数でハッシュ値を抽出して重複チェックを行う事を考えています。
> 
> しかし、hash_fileで1G(ギガ)位のファイルハッシュ値を求めると2分くらいかかるようで大量にあるファイルを処理できません(md5,sha256の両方で試しました)。ハッシュ値なので100%の同一性は求めません(無理なので)が、もっと高速に実行する方法は無いのでしょうか?

PHP5のhash_fileという関数が遅いのか、それともハッシュを求めること自体に
時間がかかるのかを区別してみてはどうでしょうか。PHP以外の方法でハッシュ
値を求めるのにかかる時間が遅ければしかたがないのではないでしょうか。

> フリーの重複チェックプログラムについては、もっと高速に行っているようです。

試された「フリーの重複チェックプログラム」はハッシュ値を計算して比較して
いるのでしょうか。例えばファイルサイズだけ比較して違うことがわかればその
時点で比較をやめれば複数ファイルの処理の時には速くなるのではないでしょう
か。ひょっとするとファイルサイズの比較だけで同じと判定していたりすること
はないのでしょうか。


PHP-users メーリングリストの案内