Сообщение от melky
|
проблема только в том, чтобы высчитать md5 для файла в источнике
|
вот и я думаю как это сделать... ведь если мы просто считаем этот файл, то нет гарантии что нам файл выдался до конца, и не произошло обрывов связи. Хотя если подумать то наверное что-то вроде этого должно стабильно работать:
function safe_copy($source_file, $destination_file) {
if(!$sMD5_step1=@md5_file($source_file)) return false;
if(!@copy($source_file, $destination_file)) return false;
if(!$sMD5_step2=@md5_file($destination_file)) return false;
if($sMD5_step1!==$sMD5_step2) return false;
return true;
}
Как я понимаю, тут получилась двойная проверка, т.к. по сути здесь 2 запроса на сервер: md5_file($source_file) и copy($source_file, $destination_file). А при проблемах со связью он не может дважды выдать файл одинаково неполный.