A simple example on incremental file hashing:$fp = fopen($file, "r");$ctx = hash_init('sha256');while (!feof($fp)) { $buffer = fgets($fp, 65536); hash_update($ctx, $buffer);}$hash = hash_final($ctx, true);fclose($fp);While incremental hashing is quite slow, it's the easiest way to hash - parts of large files: I.e., a 700MB avi video uses first x bytes to store metadata, so in order to hash the avi's data only, you have to fseek to data start and use incremental hashing- streaming data if php just proxies the data- whenever it's inadequate or impossible to store the data being hashed into memory (i.e. because of their size) or on disc.