Problema com atualização do sistema pela Internet
Galera,
Qual a melhor forma de se fazer a verificação e atualização de um sistema pela Internet? Pois o q estou fazendo é baixar um arquivo DAT via FTP, pois se baixar via HTTP sempre é carregado o arquivo que está no cache da máquina e não o que está no site. Quando concluído o donwload via FTP é lido a versão dentro do file e sendo superior o sistema faz o download automático das atualizações.
Existe alguma forma melhor de se fazer isso? Existe algum problema se for feito por exemplo mil conexões FTP dentro do servidor do provedor ao mesmo tempo? Pois estou preocupado com congestionamento e indisponibilidade de atualização, pois o sistema tem que estar disponível 24hrs sem falha.
Obrigado...
Qual a melhor forma de se fazer a verificação e atualização de um sistema pela Internet? Pois o q estou fazendo é baixar um arquivo DAT via FTP, pois se baixar via HTTP sempre é carregado o arquivo que está no cache da máquina e não o que está no site. Quando concluído o donwload via FTP é lido a versão dentro do file e sendo superior o sistema faz o download automático das atualizações.
Existe alguma forma melhor de se fazer isso? Existe algum problema se for feito por exemplo mil conexões FTP dentro do servidor do provedor ao mesmo tempo? Pois estou preocupado com congestionamento e indisponibilidade de atualização, pois o sistema tem que estar disponível 24hrs sem falha.
Obrigado...
Hell_gentleman
Curtidas 0
Respostas
Xanatos
03/12/2004
voce pode fazer o download via HTTP mesmo e ai vc pode por exemplo excluir o conteudo da Cache antes de fazer o download ou usar a funcao que faz sem usar a cache
para excluir os arquivos em Cache:
Atravez dessa funcao vc pode criar outro só para excluir o arquivo que vc vai baixar...
Espero que ajude!!!!
function DownloadURL_NOCache(const aUrl: string; var s: wideString): Boolean; var hSession: HINTERNET; hService: HINTERNET; lpBuffer: array[0..1024 + 1] of Char; dwBytesRead: DWORD; begin Result := False; s := ´´; // hSession := InternetOpen( ´MyApp´, INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); hSession := InternetOpen(´MyApp´, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); try if Assigned(hSession) then begin hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, INTERNET_FLAG_RELOAD, 0); if Assigned(hService) then try while True do begin dwBytesRead := 1024; InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead); if dwBytesRead = 0 then break; lpBuffer[dwBytesRead] := 0; s := s + lpBuffer; end; Result := True; finally InternetCloseHandle(hService); end; end; finally InternetCloseHandle(hSession); end; end;
para excluir os arquivos em Cache:
procedure DeleteIECache; var lpEntryInfo: PInternetCacheEntryInfo; hCacheDir: LongWord; dwEntrySize: LongWord; begin dwEntrySize := 0; FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize); if hCacheDir <> 0 then begin repeat DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName); FreeMem(lpEntryInfo, dwEntrySize); dwEntrySize := 0; FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize); GetMem(lpEntryInfo, dwEntrySize); if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize; until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize); end; FreeMem(lpEntryInfo, dwEntrySize); FindCloseUrlCache(hCacheDir); end;
Atravez dessa funcao vc pode criar outro só para excluir o arquivo que vc vai baixar...
Espero que ajude!!!!
GOSTEI 0