APLICACAO DEMASIADO LENTA

USUARIO.EXCLUIDOS 04/03/2005 06:01:35
#71053
Desenvolvi um programa que faz uma ligação a um servidor via FTP usando API do wininet.dll. São copiados para o disco local, cerca de 60 ficheiros com 100KB cada um.

Acontece que esta tarefa chega a demorar mais de 1 minuto desmotivando os utilizadores, fazendo com que até encerrem o programa antes de ser terminada a transação.
Haverá alguma forma de acelerar este proceso.

Outro pormenor, a velocidade varia muito entre computadores. Tenho um que demora metade do tempo....será que a versão do wininet instalada no computador, estará relacionada com este problema?

Já tentei fazer essa mesma transacção, usando o FTP pelo DOS e apenas ganhei 3 segundos!
USUARIO.EXCLUIDOS 04/03/2005 12:52:21
#71123
Miguel Angelo
A velocidade do processamento do computador depende das seguintes variáveis:
Memória RAM, Processador, velocidade de acesso aso dados no Hard Disc, Memória da placa de vídeo e de som (caso a aplicação utilize recurso de audio e vídeo).

Acredito que este é o motivo para a variação de processamente entre máquinas, tente por exemplo utilizar as API da biblioteca Winsock ou outra API que tenha as mesmas funcionalidades.
USUARIO.EXCLUIDOS 04/03/2005 15:19:52
#71152
Não acho o tempo em torno de 1 minuto lento para a copia via FTP de 6000 KB, pelo contrario acho uma boa performance. é uma quantidade de dados razoavel, vc deve explicar isso ao usuários.

O que pode ser feito seria deixar essa copia rodando em segundo plano, permitindo assim o uso do sistema pelo usuario, no termino da copia vc mostra uma msg.
LCSD 04/03/2005 15:46:57
#71156
E PQ durante a cópia, VC não coloca um PROGRESSBAR com o andamento da cópia dos dados??

Assim, o usuário ficará sabendo que está sendo copiado um determinado arquivo, e quanto mais ou menos falta para acabar com tudo!!
USUARIO.EXCLUIDOS 04/03/2005 16:01:24
#71158
Têm razão, mas tou lidando com usuários bastante exigentes no que se refere a velocidade! Mesmo eu sou exigente nesse ponto.
Acontece que já pensei numa solução, mas não sei como a implementar:
- queria dar ao usuário a possibilidade de escolher o nº de ficheiros a serem transferidos do servidor, pois na maioria das vezes, uma grande quantidade de ficheiros nem é necessária, sendo estes, sempre, os mais antigos.

Por este motivo, precisava da vossa ajuda para filtrar por data de criação, os ficheiros a serem transferidos. Tendo em conta que utilizo API wininet.dll.

Depois de declarar as funções necessários num módulo, faço a ligação ao servidor:
lngINet = InternetOpen("Liga", 1, vbNullString, vbNullString, 0)
lngINetConn = InternetConnect(lngINet, strServidor, 0, "guest", "guest", 1, 0, 0)


Depois transfiro os todos os ficheiros com extensão .Z:


lngHINet = FtpFindFirstFile(lngINetConn, "/home/*.Z, pData, 0, 0)
strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1) ' Download do 1º ficheiro da pasta
blnRC = FtpGetFile(lngINetConn, "/home2/" & pData.cFileName, pData.cFileName, 0, 0, 2, 0)

blnRC = InternetFindNextFile(lngHINet, pData) ' Download dos ficheiros seguintes
strTemp = Left(pData.cFileName, InStr(1, pData.cFileName, String(1, 0), vbBinaryCompare) - 1) ' Download do 1º ficheiro da pasta
blnRC = FtpGetFile(lngINetConn, "/home2/" & pData.cFileName, pData.cFileName, 0, 0, 2, 0)


Ajudem-me por favor
USUARIO.EXCLUIDOS 05/03/2005 18:10:09
#71276
Porque será que quando posto algo relacionado com o uso de API do wininet, ninguém responde?
Já é o meu 3º post relacionado com este metodo, e em nenhum obtive resposta!
USUARIO.EXCLUIDOS 06/03/2005 01:24:48
#71352
Nunca usei essa API. Mas se vc passa o nome do arquivo, então basta dar um nome no arquivo que identifique a idade do arquivo.

O que identifica um ficheiro antigo? é a data? Se for coloca a data no nome do arquivo.
Ex:
arquivo1_01_05 ( janeiro 2005 .....
arquivo2_02_05
arquivo3_03_05

Dessa forma é possivel vc pegar o arquivo que deseja.
USUARIO.EXCLUIDOS 06/03/2005 04:51:40
#71354
Obrigado Renato Mattos, mas acontece que os arquivos que estão no servidor, não são, nem podem, ser criados por mim, eles são gerados automaticamente, logo os nomes são completamente aleatórios excepto a extensão que é sempre = .Z.
Eu apenas preciso fazer download desses arquivos mas apenas os mais recentes, tipo os 10 mais recentes contidos na pasta.
Haverá forma de fazer isto?
Tópico encerrado , respostas não são mais permitidas