NiK писал(а):dj_ras писал(а):
еще наблюдал ситуацию когда при обновлении выдает ошибку
========
08-07-2008 18:06:20 Downloading /download/engine3/em004_32_n2.nup(1071) old version (1071) from
http://u21.eset.com
08-07-2008 18:06:36 Connection timeout to
http://u21.eset.com while checking /download/engine3/em004_32_n2.nup
========
и соответственно файл em004_32_n2.nup оказывается битым (не докачанным до конца)
Причем происходит это в разные моменты времени на разных файлах. Это как-то "не сильно правильно" я думаю...
Во первых таймаут стоит 10с... но даже его увеличение до 300с не спасает от битых файлов. Почему-то рвется TCP сессия HTTPGET.
При такой ошибке нужно хотябы как минимум файл удалять... не говорю уже о паре попыток его всетаки скачать...
Допишу нормально скрипт - выложу тут где-нить.
если сделаешь, многие тебе спасибо скажут, и я в том числе (:
Столкнулся с этой же проблемой. Немного подумав (не силен в перле), подравил файл upd.pl - теперь все работает вроде как нужно.
---------Исправление-------------
заменить строку (где-то 121 по счету)
Код: Выделить всё
if ($status =~ /500 read/) {logging("Connection timeout to $server while checking $file"); return 0;}
двумя строками
Код: Выделить всё
if (($status =~ /500 read/) && ($file eq "/update.ver" )) {logging("Connection timeout to $server while checking $file"); return 0;}
if (($status =~ /500 read/) && ($file ne "/update.ver" )) {logging("Connection timeout to $server while checking $file"); unlink(<$path/$file>); return 0;}
---------------------------------
Смысл исправления в удалении битого файла при ошибке типа Connection timeout to
http://u21.eset.com while checking /download/engine3/хххх. Этот файл докачается со следующего сервера. Притом делается проверка чтоб это был не update.ver.
Если у кого-то есть лучшие варианты - пишите.