[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: If (copy($file,$to_file)){ - что если разрыв?
ZHN
Здравствуйте уважаемые 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
//запишем имя скопированного в файл, для последующего учета

сделать дополнительную проверку на наличие связи. Может есть другое решение?



Спустя 1 час, 4 минуты, 23 секунды (10.02.2009 - 20:13) REANIMATOR написал(а):
можно например проверить есть ли скопированый файл в директории. Или\и проверить одного ли размера источник и новый файл. А соеденение проверять нет смысла, я думаю. Т.к. оно может востановиться межуду сбоем копирования и когда ты его проверишь.
Хотя впринципе эта функция возвращает фалс при сбое ... (странно)

Спустя 1 час, 52 минуты, 35 секунд (10.02.2009 - 22:05) ZHN написал(а):
Цитата (REANIMATOR @ 10.02.2009 - 17:13)
можно например проверить есть ли скопированый файл в директории. Или\и проверить одного ли размера источник и новый файл. А соеденение проверять нет смысла, я думаю. Т.к. оно может востановиться межуду сбоем копирования и когда ты его проверишь.
Хотя впринципе эта функция возвращает фалс при сбое ... (странно)

так скопированный файл имеется, но не докачанный до конца

Спустя 2 часа, 6 минут, 39 секунд (11.02.2009 - 00:12) REANIMATOR написал(а):
тогда второй вариант думаю поможет
Цитата (ZHN @ 10.02.2009 - 19:05)
проверить одного ли размера источник и новый файл.


это для проверки отдалённого файла. А с фтп надеюсь справишься
PHP
function urlfilesize($url,$thereturn) {
if (substr($url,0,4)=='http') {
$x = array_change_key_case(get_headers($url, 1),CASE_LOWER);
$x = $x['content-length'];
            }
else { $x = @filesize($url); }
if (!$thereturn) { return $x ; }
elseif(
$thereturn == 'mb') { return round($x / (1024*1024),2) ; }
elseif(
$thereturn == 'kb') { return round($x / (1024),2) ; }
}


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.