Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 27.01.2012, 09:46
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

B@rmaley.e><e,
Примерно так?
function safe_copy($source_file, $destination_file) {
	if(!$aHeaders=@get_headers($source_file, 1)) return false;
	if(!$iSize1=$aHeaders['Content-Length']) return false;
	if(!@copy($source_file, $destination_file)) return false;
	if(!$iSize2=@filesize($destination_file)) return false;
	if($iSize1!=$iSize2) return false;
	return true;
}
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #12 (permalink)  
Старый 27.01.2012, 10:13
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Да.
Ответить с цитированием
  #13 (permalink)  
Старый 27.01.2012, 20:29
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function curl_download( $url, $file ) {
    // открываем файл, на сервере, на запись
    $dest_file = @fopen( $file, "w" );
   
    // открываем cURL-сессию
    $resource = curl_init();

    // устанавливаем опцию удаленного файла
    curl_setopt( $resource, CURLOPT_URL, $url );
    
    // устанавливаем место на сервере, куда будет скопирован удаленной файл
    curl_setopt( $resource, CURLOPT_FILE, $dest_file );
    
    // заголовки нам не нужны
    curl_setopt( $resource, CURLOPT_HEADER, 0 );
    
    // выполняем операцию
    curl_exec( $resource );

    $error = curl_errno( $resource );
    
    // закрываем cURL-сессию
    curl_close( $resource );
    
    // закрываем файл
    fclose( $dest_file );

    return $error;
}
Ответить с цитированием
  #14 (permalink)  
Старый 27.01.2012, 23:01
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

devote, разве CURL сможет понять, когда связь оборвалась, а когда файл скачан верно \ неверно ?
Ответить с цитированием
  #15 (permalink)  
Старый 27.01.2012, 23:09
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky Посмотреть сообщение
devote, разве CURL сможет понять, когда связь оборвалась, а когда файл скачан верно \ неверно ?
Ну если будет использоваться Content-Length то-есть если сервер пришлет длину контента, и курл получит меньше чем положено, то вернет ошибку. Если же сервер будет возвращать контент в виде кусков (chunks) то ошибка может возникнуть в том случае если кусок не удовлетворяет своей длине. Обычно такие ошибки CURL нормально воспринимает. Но если сервер отдаст вместо файла что-то другое, например HTML страницу, то CURL ничего не скажет. Тут нужно проверять заголовки, а точнее в идеале лучше и то и другое делать.
Ответить с цитированием
  #16 (permalink)  
Старый 27.01.2012, 23:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от devote Посмотреть сообщение
Ну если будет использоваться Content-Length то-есть если сервер пришлет длину контента, и курл получит меньше чем положено, то вернет ошибку. Если же сервер будет возвращать контент в виде кусков (chunks) то ошибка может возникнуть в том случае если кусок не удовлетворяет своей длине. Обычно такие ошибки CURL нормально воспринимает. Но если сервер отдаст вместо файла что-то другое, например HTML страницу, то CURL ничего не скажет. Тут нужно проверять заголовки, а точнее в идеале лучше и то и другое делать.
вот этой мелочи я не знал. мало изучал php.
Ответить с цитированием
  #17 (permalink)  
Старый 28.01.2012, 18:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

да и функции типа md5_file и copy должны возвращать ошибки. Вообще непонятно, откуда взялись идеи о том, что файл может неправильно скачаться. TCP стал ненадежным протоколом?

Сообщение от greatilya
поскольку это облачное хранилище то доступ к ним логичнее осуществлять через банальный http
1) почему? 2) разве это не обязанность облачных хранилищ, брать на себя заботу о надежном хранении данных?
Ответить с цитированием
  #18 (permalink)  
Старый 02.02.2012, 19:47
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от x-yuri
TCP стал ненадежным протоколом?
Нет, интерент по "телефонной лапше" не начинал быть надежным
Сообщение от x-yuri
1) почему?
Потому что если скачивать файлы посредством API предварительно пройдя авторизацию, конечно можно быть уверенным в правильности копирования файла, но этот способ не является для меня приемлемым, так как:
1. при этом на авторизацию и прочие "движняки" потребляется куда больше трафика - следовательно затрачивается значительно времени.
2. для авторизаций и прочих "движняков" требуется затрачивается также исходящая скорость(в смысле в большем объеме чем при загрузке по http). Это я проверял, потребление исходящего трафика там достаточно большое(это некая особенность API). А у меня входящий трафик 8Мбит, исходящая 0,5Мбит. Следовательно все варианты с затратой исходящего трафика мне не подходят.
Если помножить 1 и 2 пункты на миллины мелких файлов, то получается что каждая сотая секунды "на счету". Пока удалось добиться загрузки со скоростью порядка 1 секунды на файл, позже подумаю как увеличить скорость за счет многопоточного Curl.
Сообщение от x-yuri
2) разве это не обязанность облачных хранилищ, брать на себя заботу о надежном хранении данных?
в надежности я не сомневался(тем более что данные там хранятся в нескольких копиях), но иметь у себя резервную копию данных, на мой взгляд, нужно всегда.
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
  #19 (permalink)  
Старый 03.02.2012, 02:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от greatilya
Нет, интерент по "телефонной лапше" не начинал быть надежным
TCP гарантирует целостность передаваемых данных. Это значит, что либо информация корректно передалась, либо не передалась. Других вариантов нету.
Ответить с цитированием
  #20 (permalink)  
Старый 03.02.2012, 15:02
Аватар для greatilya
Интернет-турист
Отправить личное сообщение для greatilya Посмотреть профиль Найти все сообщения от greatilya
 
Регистрация: 01.08.2008
Сообщений: 516

Сообщение от x-yuri
TCP гарантирует целостность передаваемых данных
Правильно ли я понял? Если даже используем функцию copy, и если в процессе копирования интернет либо сервер с файлом отрубится, то функция вернет false?
__________________
VPS от 175 рублей (есть скидки 15% писать в ПМ) Анализ рынка VPS серверов
Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен.
Альберт Эйнштейн
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка БОЛЬШИХ файлов посредством ajax barcelona jQuery 7 12.10.2012 03:37
Индиептор загрузки файлов С СЕРВЕРА! GrishinEV Events/DOM/Window 12 01.12.2011 14:05
SWFUpload - отображение выбранных файлов Барин AJAX и COMET 2 17.07.2011 10:07
Скрипт для файлов Deff13 Общие вопросы Javascript 4 23.06.2011 10:46
jQuery:как получить список файлов в директории Chaos Lord jQuery 4 30.11.2009 19:55