Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.11.2011, 19:56
Barlo Barlo вне форума
Прохожий
 
Регистрация: 24.11.2011
Сообщения: 3
Репутация: 10
По умолчанию IdHTTP в потоке выделяет много памяти

Здравствуйте. Пишу программу для загрузки на файлообменники с использованием idHTTP. Создал класс поток в котором происходит загрузка файла на сервер. В каждом отдельном потоке отдельный объект IDhttp.
Работа самого класса не вызывает сложностей.

Вопрос следующий: когда я загружаю файл на сервер методом Post, все идет нормально, но после удаления idhttp и завершения потока данные в памяти остаются.

Вот основной код Execute:

Код:
FIdHTTP:=TIdHTTP.Create(nil);
FIdHTTP.Request.UserAgent:='Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.6.30 Version/10.61';
FIdHTTP.Request.AcceptLanguage:='ru-RU,ru;q=0.9,en;q=0.8';
FIdHTTP.Request.CacheControl:='no-cache';
FIdHTTP.Request.ContentType:='';

FIdHTTP.HandleRedirects:=true;
FOldURL:='';
FIdHTTP.RecvBufferSize:=32*1024;
FIdHTTP.SendBufferSize:=32*1024;
FIdHTTP.OnWork:=IdHTTP_Work;
FIdHTTP.OnStatus:=IdHTTP1Status;
FIdHTTP.OnRedirect:=IdHTTP1Redirect;

depositfiles;

if FMP<>nil then begin 
    FMP.Free; 
    FMP:=nil; 
    end;

if FIdHTTP<>nil then begin
    FIdHTTP.Disconnect;
    FIdHTTP.Free;
    FIdHTTP:=nil;
    end;

while not (Terminated) do begin
    end;

//---------------------------



procedure depositfiles();
var
  s,b: String;
  newFileName, Path : string;
  i : integer;
begin

Get('http://depositfiles.com/');
// -- авторизация
// ....
//-----
s="данные веб-формы для загрузки";

Fmp := TidMultiPartFormDataStream.Create;
Fmp.AddFormField('MAX_FILE_SIZE', '2097152000');
Fmp.AddFormField('UPLOAD_IDENTIFIER', GetSubStr(s, 'name="UPLOAD_IDENTIFIER" value="', '"'));
Fmp.AddFormField('go', '1');
Fmp.AddFormField('agree', '1');
Fmp.AddFile('files', FFileName, 'multipart/form-data');

b := Post(GetSubStr(s, 'multipart/form-data" action="', '"'), Fmp);

// дальше обрабатываю результат
end;

В результате после загрузки на сайт около 100 Мб, в памяти программы висит ~30 Мб сверх нормы. Кроме того волнует вопрос: как сделать чтобы idhttp потреблял меньше памяти в процессе загрузки. Если я захочу загрузить 1гб разом, то будет выделено много памяти в процессе загрузки

Последний раз редактировалось Barlo, 24.11.2011 в 19:59.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025