рассылка сообщений по IdHTTP

Тема в разделе "Другие языки", создана пользователем Ratko, 29 май 2010.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Меня попросили написать програму, рассылающую сообщения. Я программу написал она работает, только немного странно. Сразу сообщения приходят нормально, но потом сообщения приходят реже и реже. Я думал - это сервер не успевает обрабатывать. Сделал паузу между группами сообщений - ничего не изменилось(...100 сообщений - 5 минут пауза -100 сообщений...). Если программу перезагрузить - то все с начала нормально - потом тормозит. Я использую TIdMultiPartFormDataStream. Не нашел как его очистить - сделал еще одну переменную чистую и переприсваеваю после отправки сообщения. Может ли проблема заключатся в этом?
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    похоже на старую проблему компонент инди - утечку памяти при многократном использовании одного и того же экземпляра idhttp. попробуй для каждого запроса создавать отдельный экземпляр а потом убивать его.
     
  3. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Переписал программу. Экземпляр класса TIdHTTP создается каждый раз при отправике данных, и удаляется после передачи данных. Программа всеравно тормозит. В диспетчере задач при длительной рассылке память не растет. Уже не знаю, что и думать.
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102

    кусок кода с момента создания до момента удаления компонента в студию
     
  5. BobMarley

    BobMarley

    Регистр.:
    12 фев 2010
    Сообщения:
    150
    Симпатии:
    56
    Общеизвестный факт, что Индюк веСЧь весмя глючная, юзай WINSOCK!

    Добавлено через 20 минут
    Или как вариант использовать SwinHttp - класс для работы с протоколом http
     
  6. Ratko

    Ratko Постоялец

    Регистр.:
    13 сен 2008
    Сообщения:
    92
    Симпатии:
    21
    Спасибо за советы. Я программу пофиксил. Там идет рассылка с разных акаунтов на сайте. Я сделал:

    Код:
    procedure SiteLogin(param: string);
      ...
    begin
    
      MessageList := TIdMultiPartFormDataStream.Create;
    
      ...
      
    end;
    
    и

    Код:
    procedure SiteLogout(param: string);
      ...
    begin
    
      ...
    
      MessageList.Free;
      
    end;
    
    эти процедуры выполняются перед и после отправки сообщения. :)
     
Статус темы:
Закрыта.