Fórum Problema com atualização do sistema pela Internet #261032
03/12/2004
0
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
Curtir tópico
+ 0
Responder
Posts
03/12/2004
Xanatos
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!!!!
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)