If (copy($file,$to_file)){ - что если разрыв?

  • Автор темы Автор темы Zhenya
  • Дата начала Дата начала

Zhenya

Новичок
If (copy($file,$to_file)){ - что если разрыв?

Здравствуйте уважаемые php-кодеры!

Сегодня наткнулся та такую интересную ситуацию, что хочу поведать её вам и спросить естественно, как быть в таком случае.

В скрипте выполняющем копирование с какого-то сайта на мой FTP есть такие строки:


PHP:
//копируем файл
if (copy($fil,$to_fil)) {$copy=true; //нужный мне флажок
fwrite($fh_logi,date('m.d.y H:i:s')." ".$kolt."_".$ko_raz.". Файл ".basename($fil)." скопирован...\n");//записали в лог
//запишем имя скопированного в файл, для последующего учета
$datfiledow = fopen($file_download,"a"); //открыли файл для дозаписи
fwrite($datfiledow,trim(basename($fil))."\n");//записали
fclose($datfiledow);//закрыли файл
}
else {$copy=false;
fwrite($fh_logi,date('m.d.y H:i:s')." Не могу скопировать ".basename($fil)." ждем ".$time_copy." секунд\n");//записали в лог
sleep($time_copy);//ждем, потом срабатывает while и пробуем снова
}


так вот, мне интересно, что вернет функция copy в случае неожиданного отключения сайта-источника?

Я по этому и спрашиваю, что в моем случае файл не докачался, а условие if с большим упорством ответило: "Надо писать, что файл удачно скопирован."

Что посоветуете, большие умы?

Пока думаю, можно перед строкой:

PHP:
//запишем имя скопированного в файл, для последующего учета

сделать дополнительную проверку на наличие связи. Может есть другое решение?
 
На том сервере отдачу md5_file и у себя делаете и сверяете. Если не сходится - значит не докачалось или бито. Если Вы не можете на том сайте запустить скрипт - значит Вы воруете контент и тему я закрою. Андестанд?
 
Как вариант - HEAD-запросом получать размер и сравнивать.

HraKK
Хостинг сайта-донора может быть без возможности исполнения PHP. Андестанд?
 
Angerslave
Если он без то это проблемы индейцев. HEAD даст только количество байтов, но не правильность.
 
Автор оригинала: HraKK
На том сервере отдачу md5_file и у себя делаете и сверяете. Если не сходится - значит не докачалось или бито. Если Вы не можете на том сайте запустить скрипт - значит Вы воруете контент и тему я закрою. Андестанд?
не, не контент не ворую...
сайт источник имеет вид: http://ip-адрес:порт/страничка с файлами
человек открывает (запускает) мне http сервер на машине, которая имеет постоянный доступ в интернет по просьбе, но у него там с машиной глюки какие-то бывают...
скрипты php нет возможности там запускать
 
Значит считай количество байтов HEAD запросом это все чем мы тебе сможем помочь.
 
ну хотя бы бинари md5 / md5sum там есть (можно в крон воткнуть генератор файла с чексуммами)?

или ваще венда? (хотя судя по тому что "глюки какие-то", наверняка ;))
 
Сверху