Det kommer rigtig meget an på, hvad du mener. Mener du om to fil-navne peger på samme blok på harddisken. Eller om to filer indeholder de samme bytes. Eller om to filer indeholder samme information i forskellige formater?
Men hvis det er nummer 2 - om de indeholder samme bytes - så ville en MD5 af de to filer kunne laves ret hurtigt (altså i operativsystemet uden om php) og så kan disse sammenlignes. Det giver dig ret høj sandsynlighed.
Skal du være 100% sikker skal du dog sammenligne de komplette filer.
Er du på noget *nix-server kan du måske også bruge nogle eksterne programmer såsom diff, som lynhurtigt kan sammenligne og påpege forskelle mellem filer. Der findes garanteret noget tilsvarende til windows.
Jeg har med nogle store filer at gøre på mit site og det kunne derfor være lækkert hvis jeg kunne slippe for at have dublikante filer :) Altså så jeg i min database bare kunne referere til en fil i stedet for flere
Med PHP-CLI, men det giver samme anvendelse gennem en webserver selvfølgelig :)
>> hoppe11 MD5-hashes er nær-uniformt fordelt i deres 2^128 bit udfaldsrum, så vi kan godt sige, at sandsynligheden for en kollision er 1/2^128 (2,94e-39). Hvis du så har 1 milliard filer og der bliver tilføjet en ny, så er sandsynligheden for, at der allerede er en fil med samme hash altså 10^9/2^128 - 2,94e-30. Det er bestemt ikke noget, du behøver bekymre dig om :)
Altså, hvis vi forestiller os, at du fra i dag uploader en fil hvert millisekund, så vil der gå over 5 år før sandsynligheden for en kollision overstiger 50% (lidt voldtægt på sandsynlighedsregning, i know) :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.