Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.05;
Скачать: CL | DM;

Вниз

ftp-клиент, IdFTP   Найти похожие ветки 

 
workbench   (2008-08-28 15:49) [0]

Программа клиент должна в течение дня скачивать с ftp и туда же закачивать достаточно большое кол-во файлов (порядка неск. тысяч в день). Предполагается что поддерживать соединение весь день она не будет, а будет запускаться каждые 10-15 минут. Какой конструкцией можно обеспечить "надёжное соединение" c ftp (например, нужно чтобы при разрыве соединения на закачке к.-л. файла прога вновь устанавливала соединение)? Пока ничего лучше не придумал иначе как  перед каждым вызовом IdFTP.Get, Put, List и т.д проверять св-во IdFTP.Connected, то есть что-то типа того:

 if not IdFTP.Connected then ConnectToFTP;
 IdFTP.get(...);

но это наверно не совсем правильно...


 
Сергей М. ©   (2008-08-28 16:34) [1]


> это наверно не совсем правильно


Почему ?


 
workbench   (2008-08-28 16:58) [2]


> Сергей М.


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

может подскажете тогда ответ вот на какой вопрос: при использовании того же самого компонента (IdFTP), прога "подвисает" на вызове IdFTP.Get(...), причём сервер этот по истечении 3-х минутного периода (если не было запросов) клиента "отключает", так вот при таком зависании даже после 3-х минут продолжает висеть. Очень неприятная штука, если прога запускается порядка 30 разиков в день, то соот-но может возникнуть ситуация что на серваке будет висеть такое же кол-во заглохших процессов, может кто-нить сталкивался с подобным?


 
Dennis I. Komarov ©   (2008-08-28 17:50) [3]

У меня есть служба каторая ежедневно передает туда сюда файлы по фтп
Раньше делал ее на Indy - не очень стабильно работает
На ICS - были проблемы - при вынесении логики передачи в dll большие файлы стали приходить с искажениями... (разбераться не стал)
Сейчас переделал все на "WinInet" - вроде пока без глюков...


 
Сергей М. ©   (2008-08-28 19:56) [4]


> прога "подвисает" на вызове IdFTP.Get(...)


Не трынди

"Подвисает" не "прога", а поток, в котором вызывается этот метод.

Если этот поток является основным, то шмякни на форму компонент TIdAntifreeze и донт ворри би хеппи.


 
workbench   (2008-08-29 09:47) [5]


> Сергей М.


Поток основной (и единственный), а вот IdAntifreeze мне не поможет, ибо приложение консольное (окно не нужно) и объект Application соот-но не используется.

Ещё была вот такая мысль - сделать что-то вроде контрольных точек перед закачкой и после закачки файла:

 CPoint := false;
 IdFTP.Get(...);
 CPoint := true

... и создать ещё один поток который отсчитывает время и проверяет значение CPoint, и при превышении интервала завершает процесс, это хотя бы поможет предотвратить описанную в [2] ситуацию (с зависанием n-го кол-ва экз-ов проги).


 
Сергей М. ©   (2008-08-29 10:26) [6]


> workbench   (29.08.08 09:47) [5]


Отсюда и очевидное решение - создать доп.поток и вынести в него всю работу с IdFTP.


> поток который отсчитывает время и проверяет значение CPoint


Вот это как раз можно делать в осн.потоке.



Страницы: 1 вся ветка

Текущий архив: 2008.10.05;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.006 c
4-1194272170
kernel
2007-11-05 17:16
2008.10.05
spindown by DeviceIoControl


8-1185268687
s7r
2007-07-24 13:18
2008.10.05
Странная проблема с GDI+


2-1219917796
D7
2008-08-28 14:03
2008.10.05
COM-сервера


2-1220078652
Виктор007
2008-08-30 10:44
2008.10.05
Cвободное позиционирование контролов на TToolBar


2-1219848090
fokas
2008-08-27 18:41
2008.10.05
Передача управление стартовой формой процедурам модуля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский