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

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:
//запишем имя скопированного в файл, для последующего учета
сделать дополнительную проверку на наличие связи. Может есть другое решение?
 

HraKK

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

Angerslave

Новичок
Как вариант - HEAD-запросом получать размер и сравнивать.

HraKK
Хостинг сайта-донора может быть без возможности исполнения PHP. Андестанд?
 

HraKK

Мудак
Команда форума
Angerslave
Если он без то это проблемы индейцев. HEAD даст только количество байтов, но не правильность.
 

Zhenya

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

HraKK

Мудак
Команда форума
Значит считай количество байтов HEAD запросом это все чем мы тебе сможем помочь.
 

fixxxer

К.О.
Партнер клуба
ну хотя бы бинари md5 / md5sum там есть (можно в крон воткнуть генератор файла с чексуммами)?

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