Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use file_get_contents() to compare two files?

Tags:

I want to synchronize two directories. And I use

file_get_contents($source) === file_get_contents($dest) 

to compare two files. Is there any problem to do this?

like image 347
xdazzyy Avatar asked Jun 17 '10 08:06

xdazzyy


1 Answers

I would rather do something like this:

function files_are_equal($a, $b) {   // Check if filesize is different   if(filesize($a) !== filesize($b))       return false;    // Check if content is different   $ah = fopen($a, 'rb');   $bh = fopen($b, 'rb');    $result = true;   while(!feof($ah))   {     if(fread($ah, 8192) != fread($bh, 8192))     {       $result = false;       break;     }   }    fclose($ah);   fclose($bh);    return $result; } 

This checks if the filesize is the same, and if it is it goes through the file step by step.

  • Checking the modified time check can be a quick way in some cases, but it doesn't really tell you anything other than that the files have been modified at different times. They still might have the same content.
  • Using sha1 or md5 might be a good idea, but this requires going through the whole file to create that hash. If this hash is something that could be stored and used later, then it's a different story probably, but yeah...
like image 54
Svish Avatar answered Oct 29 '22 22:10

Svish