Конференция "Сети" » idHTTP+PHP+разные сетевые настройки=проблемы
 
  • abun © (20.08.10 13:40) [0]
    Есть приложение, которое взаимодействует через компонент idHTTP со скриптом на внешнем сервере (в инете).
    Скрипт на РHP, генерирует по заданным параметрам картинку, сохраняет ее во временную папку на серваке (типа кэш, чистится раз в неделю).
    Программа моя сначала отправляет запрос на сайт, чтобы сгенерировалась эта картинка, а потом отправляет новый запрос, из которого получает саму картинку.

    Вот сам код:
    // процедура загружает из инета jpg-картинку, сохраняет ее в системную папку как bmp
    // и устанавливает как обои
    procedure TMainForm.Pic(num:integer; w,h: integer);
    var
     SourceFile:string;
     DestFile:string;
     M:TMemoryStream;
     j:tjpegimage;
     b:TBitmap;
     fname:string;
    begin
     // отправляем на сервак запрос, на сервере создается временный файл с обоями
     SourceFile:=Format('http://desktopmania.ru/picd?id=%d&r=%dx%d',[num,w,h]);
     M:=TMemoryStream.Create;
     HTTP.Get(SourceFile,M);
     m.Clear;
     // загружаем эту временную картинку
     SourceFile:=Format('http://desktopmania.ru/pics-temp/DesktopMania.ru-%d-%dx%d.jpg',[num,w,h]);
     HTTP.Get(SourceFile,M);
     M.Position:=0;

     j:=tjpegimage.Create;
     j.LoadFromStream(M);
    //j.LoadFromFile('d:\pic.jpg');
     b:=tbitmap.Create;
     b.Assign(j);
     fname:=SysInfo.WinPath+'\Wallpaper.bmp';
     b.SaveToFile(fname);
     j.Free;
     b.Free;
     m.Free;

     // устанавливаем картинку как обои
     ChangeWallpaper(fname);
    end;

    Теперь самое интересное. Программа тестируется на 2-х компах с разными сетевыми настройками и разным качеством доступа в инет:
    на одном компе, где соединение с инетом не через прокси (хотя скорее всего прокси не при чем) и скорость соединение не больше 4кб/сек прога выдает ошибку во втором запросе - типа не найдена картинка, т.е. первый запрос не завершился, видимо и соответственно, картинка еще не была сохранена,
    а на втором компе, где прокси есть (прога, кстати, автоматом определяет настройки прокси из IE, так что с этим вроде все в порядке), но скорость соединения хорошая (около 100кб/сек) - все работает как часы.
    В чем причина может быть?
    Использовать свойство idHTTP ReadTimeOut или что-то еще?
    Читал книгу-перевод "Глубины Indy" от товарища Подгорецкого, но ничего меня не натолкнуло на ответ. Ситуация нестандартная какая-то...
  • abun © (20.08.10 17:01) [1]
    Неужели никто не знает?
    Проект летит к черту... :(
  • Slym © (23.08.10 06:36) [2]
    1. прокси иногда кеширует :) и до сервера запрос может и не дойти
    2. а вот второй запрос может не быть в кеше и на сервере нет т.к. первый запрос не прошел
  • Slym © (23.08.10 06:54) [3]
    код говно
    1. Переменные из 1 символа.
    2. никаких защит try
    procedure TMainForm.Pic(num:integer; w,h: integer);
    var
    Stream:TMemoryStream;
    jpg:tjpegimage;
    bmp:TBitmap;
    WPFileName:string;
    begin
     WPFileName:=SysInfo.WinPath+'\Wallpaper.bmp';
     HTTP.Get(Format('http://desktopmania.ru/picd?id=%d&r=%dx%d',[num,w,h]));
     Stream:=TMemoryStream.Create;
     try
    // загружаем эту временную картинку
       HTTP.Get(Format('http://desktopmania.ru/pics-temp/DesktopMania.ru-%d-%dx%d.jpg',[num,w,h]),MStream);
       MStream.Position:=0;
       jpg:=tjpegimage.Create;
       try
         jpg.LoadFromStream(M);
         bmp:=tbitmap.Create;
         try
           bmp.Assign(jpg);
           bmp.SaveToFile(WPFileName);
         finally
           bmp.Free;
         end;
       finally
         jpg.Free;
       end;
     finally
       Stream.Free;
     end;
    end;



    по сабжу:
    настраивай HTTP чтоб заставлял не кешировать
    Pragma:='no-cache';
    CacheControl:='no-store, no-cache, must-revalidate';
    и прочее в этом духе
  • abun © (23.08.10 11:47) [4]
    Спасибо за критику и дельную доработку! Траи как-то недолюбливаю, хотя и знаю, что они нужны. В проблеме разобрался, Делфи оказалось не причем.
    Slym, мое уважение!
  • имя (10.11.14 13:46) [5]
    Удалено модератором
  • Alarm © (10.11.14 14:27) [6]
    Удалено модератором
  • имя (05.12.14 14:33) [7]
    Удалено модератором
  • имя (18.12.14 14:35) [8]
    Удалено модератором
 
Конференция "Сети" » idHTTP+PHP+разные сетевые настройки=проблемы
Есть новые Нет новых   [134427   +34][b:0][p:0.001]